私は現在、カスタムサイトマッププロバイダを実装しようとしています。私はそれについていくつかのチュートリアルを読んで、彼らの主導に従った。ASP NET MVCでカスタムSiteMapProviderを使用するには?
MyProject.SecurityにあるMySiteMapProviderという名前のXmlSiteMapProviderのサブクラスを作成しました。
は、私は私のWeb.configファイルのsystem.webセクションに次のコードを追加しました:
<siteMap defaultProvider="MySiteMapProvider" enabled="true">
<providers>
<add name="MySiteMapProvider"
description="Custom SiteMap provider."
type="MyProject.Security.MySiteMapProvider "
siteMapFile="Web.sitemap"
securityTrimmingEnabled="true" />
</providers>
</siteMap>
しかし、私は私のプロバイダが正しく使用されていないことを確信しています。私は実装から始めることさえできませんでした。私は、次の(擬似)の実装が含まれていることを確認するには:
public override bool IsAccessibleToUser(System.Web.HttpContext context, System.Web.SiteMapNode node)
{
Debug.Print("Hello World");
throw new Exception();
return base.IsAccessibleToUser(context, node);
}
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection attributes)
{
Debug.Print("Hello World");
throw new Exception();
base.Initialize(name, attributes);
}
public override SiteMapNode BuildSiteMap()
{
Debug.Print("Hello World");
throw new Exception();
return base.BuildSiteMap();
}
をしかし、私がしたいと、私はできるだけ多くのサイトを使用してナビゲートすることができ、何の例外は、アップ来ないとデバッグコンソールは、全くのHello Worldを示しません。
重要なことを忘れましたか?
申し訳ありませんが、私のコードを実行します。しかし、それはルートノードのチェックだけです。そして、この特定のコードが呼び出されたときにのみ実行されます。だから私はさらにどのように行くだろうか? – ckonig