2013-01-22 52 views
0

Web.config問題。 siteMap不起作用。 VS2010。Web.config中的siteMap問題

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true"> 
     <providers> 
      <add name="XmlSiteMapProvider" 
      description="Default SiteMap provider." 
      type="System.Web.XmlSiteMapProvider " 
      siteMapFile="Web.sitemap" 
      securityTrimmingEnabled="true" /> 
     </providers> 
</siteMap> 

我認爲它沒有看到'Web.sitemap'。 標記'add'中的Intellisense僅建議-lockAllAttributesExcept,lockAllElementsExcept,lockAttributes,lockElements,lockItem - 參數。 但不建議params描述,siteMapFile,securityTrimmingEnabled。

可能是什麼原因? 請指教。

Web.config文件內容是:

<?xml version="1.0"?> 

<configuration> 
    <connectionStrings> 

    <add name="SqlRoleManagerConnection" 
     connectionString="Data Source=server_name;Integrated Security=false;Initial Catalog=DB_XXX;User ID=User_XXX;Password=PASSWD_XXX" 
     providerName="System.Data.SqlClient" />  
    </connectionStrings> 


    <location path="Approver.aspx"> 
     <system.web> 
      <authorization> 
       <allow roles="Approvers"/> 
       <deny users="*"/> 
      </authorization> 
     </system.web> 
    </location> 

    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 

    <authentication mode="Windows"/> 

    <authorization> 
     <deny users="?"/> 
    </authorization> 

    <membership> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" 
      enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
      maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
      applicationName="/" /> 
     </providers> 
    </membership> 

    <profile> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/> 
     </providers> 
    </profile> 

    <roleManager enabled="true" defaultProvider="SqlRoleManager"> 
     <providers> 
     <clear/> 
     <add name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider" connectionStringName="SqlRoleManagerConnection" applicationName="HSE_Monitoring_Application" /> 
     </providers> 

    </roleManager> 


    <siteMap defaultProvider="XmlSiteMapProvider" enabled="true"> 
     <providers> 
     <add name="XmlSiteMapProvider" 
      description="Default SiteMap provider." 
      type="System.Web.XmlSiteMapProvider" 
      siteMapFile="Web.sitemap" 
      securityTrimmingEnabled="true" /> 
     </providers> 
    </siteMap> 

    </system.web> 

    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 

Web.sitemap中內容是:

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 

    <siteMapNode url="default.aspx" title="Home"> 
     <siteMapNode url="approver.aspx" title="Approver Expenses" roles="Approvers" /> 
     <siteMapNode url="audit/auditor.aspx" title="Audit Page" roles="Auditors" /> 
     <siteMapNode url="admin/admin.aspx" title="Admin Manager" roles="Admins" /> 
    </siteMapNode> 

</siteMap> 

至於!

+1

它是如何工作的? – MikeSmithDev

+0

謝謝,你解決了我的問題。 –

+0

什麼部分?修復路徑? – MikeSmithDev

回答

0

web.sitemap文件是ASP.NET的默認站點地圖提供程序,因此它將工作而不指定web.config中的<siteMap ...。另外,請考慮在您的路徑上使用~/作爲前綴:

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
    <siteMapNode url="~/default.aspx" title="Home"> 
     <siteMapNode url="~/approver.aspx" title="Approver Expenses" roles="Approvers" /> 
     <siteMapNode url="~/audit/auditor.aspx" title="Audit Page" roles="Auditors" /> 
     <siteMapNode url="~/admin/admin.aspx" title="Admin Manager" roles="Admins" /> 
    </siteMapNode> 
</siteMap>