カスタムルートハンドラーを作成しました。Webサイトに競合するコントローラー名のエリアがあるため、エラーが発生します。名前のコントローラーに一致する複数のタイプが見つかりました...
ハンドラーで名前空間を指定する必要があると思いますよね?
私は以下を試しましたが、どれもうまくいきません:
public class MyRouteHandler : MvcRouteHandler
{
protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
{
(... complicated DB lookups and "re-writing" of requestContext.RouteData.Values["controller"] ...)
// doesn't work
requestContext.RouteData.Values["namespaces"] = new[] { "Site.Contollers" };
// doesn't work
requestContext.RouteData.DataTokens.Add("namespaces", new[] { "Site.Contollers" });
// doesn't work
requestContext.RouteData.Values["namespaces"] = "Site.Contollers";
// doesn't work
requestContext.RouteData.DataTokens.Add("namespaces", "Site.Contollers");
(... snip ...)
return base.GetHttpHandler(requestContext);
}
}
正しい方法は何ですか?
注:ハンドラーはデータベースルックアップを実行し、結果に基づいてさまざまなコントローラーを選択するため、Global.asax.csファイルで基本的なMapRoute()メソッドを使用することはできません(私が知る限り)。