投稿には問題の解決策が含まれている可能性があると思います: ASP.NET の web.sitemap で外部 URL を参照する
編集: サイト www.sciosoft.com が応答しなくなったため、http://web.archive.org/web/20170821015820/http://www.sciosoft.com からコピーされたブログ テキスト (James Fielding が作成) を以下に示します。 :80/blogs/post/2010/02/23/ASPNET.aspx 内の Web サイトマップ内の外部 URL を参照します。
ASP.NET では、サイト マップを使用してナビゲーション (特にメニュー) を設定することがよくあります。デフォルトでは、ASP.NET サイトマップ プロバイダーは "Web.sitemap" ファイルを使用します。以下は、単純なサイトのこのファイルの例です。
<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
<siteMapNode title="Home" description="Home" url="~/default.aspx">
<siteMapNode title="Services" description="Services we offer" url="~/Services.aspx">
<siteMapNode title="Consulting" description="Consulting services" url="~/Consulting.aspx" />
<siteMapNode title="Support" description="Supports plans" url="~/Support.aspx" />
</siteMapNode>
<siteMapNode title="About Us" description="About Us" url="~/AboutUs.aspx">
<siteMapNode title="Company" description="Our people and offices" url="~/Company.aspx" />
<siteMapNode title="Blogs" description="Blogs from us to you"
url="http://blogs.mysite.com/default.aspx" />
</siteMapNode>
</siteMapNode>
</siteMap>
したがって、基本的なメニューは次のようになります。
ホーム サービス コンサルティング サポート 私たちについて 会社のブログ
「About Us」セクションの「Blogs」ノードが外部 URL を参照していることに注意してください。サイトに役割ベースのセキュリティを追加し始めるまでは、これは問題ではありません。具体的には、Web.config ファイルまたは Web.sitemap ファイルで securityTrimmingEnabled="true" を設定すると、「ブログ」ノードが消えて頭を悩ませます。
ホーム サービス コンサルティング サポート 私たちについて 会社概要
この時点で、一部の開発者が web.sitemap を取り除き、メニュー項目のハード コーディングを開始していることがわかります。ただし、この動作には非常に簡単な修正方法があります。トリミングされないように、ブログ ノードへのアクセスを全員に許可するだけです。
<siteMapNode title="Blogs" description="Blogs from us to you"
url="http://blogs.mysite.com/default.aspx" roles="*">
roles="*" を追加することで、ブログが復活しました。それはほとんど簡単すぎました。
完全を期すために、ブログ ノードに securityTrimmingEnabled="false" を追加することで、Web.sitemap ファイルのセキュリティ トリミングを無効にすることもできることを述べておきます。私はこの方法の大ファンではありませんが、達成しようとしていることが Web.sitemap でわかりにくくなるため、サイトで作業する次の人にとって決して良いことではありませんが、選択はあなた次第です。 .