0

ウェブサイトのニュースセクションへの簡単なルーティングがあります。ルーティングは、次のようなほとんどすべてのURLで正常に機能します

http://www.abc.com/Default.aspx

http://www.abc.com/Default.aspx?PageId=3

http://www.abc.com/Latest-News-Details.aspx?PageID=28&NewsID=39

問題が発生するのは、何らかの理由でhttp://www.abc.comを使用してWebサイトにアクセスしようとした場合のみです。何らかの理由で、カスタムエラーページにリダイレクトされます。エラーをソースに追跡できず、ローカルホストでそのようなエラーを生成できません。

コードサンプル

global.asxファイル

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup
    RegisterRoutes(RouteTable.Routes);
    //RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}


public static void RegisterRoutes(RouteCollection routes)
{
    routes.Ignore("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });
    routes.Ignore("{*allcss}", new { allcss = @".*\.css(/.*)?" });
    routes.Ignore("{*alljpg}", new { alljpg = @".*\.jpg(/.*)?" });
    routes.Ignore("{*alljs}", new { alljs = @".*\.js(/.*)?" });
    routes.Add(new System.Web.Routing.Route("{resource}.css/{*pathInfo}", new System.Web.Routing.StopRoutingHandler()));
    routes.Add(new System.Web.Routing.Route("{resource}.js/{*pathInfo}", new System.Web.Routing.StopRoutingHandler()));

    ////For News
    routes.MapPageRoute("NewsRoute", "{NewsID}/{PageID}/{NewsTitle}", "~/Latest-News-Details.aspx", false,
         new RouteValueDictionary {
                    { "NewsID", "0" },
                    { "PageID", "0"},
                    { "NewsTitle", "event-not-found" }},
         new RouteValueDictionary {   
                    { "NewsID", "[0-9]{1,8}" },
                    { "PageID", "[0-9]{1,8}" }
                }); 
}

現在、ニュースセクションのルーティングを無効にしていますが、上記のルートコードをコメント化しないままにすると、エラーが発生します。

何が問題を引き起こしているのかわかりません。

http://www.abc.comのようなデフォルトドメインのルートをどのように処理できますか

この点で助けていただければ幸いです

4

1 に答える 1

0

http://www.abc.comを処理する別のルートを作成することで問題を解決しました

public static void RegisterRoutes(RouteCollection routes)
{
    routes.Ignore("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });
    routes.Ignore("{*allcss}", new { allcss = @".*\.css(/.*)?" });
    routes.Ignore("{*alljpg}", new { alljpg = @".*\.jpg(/.*)?" });
    routes.Ignore("{*alljs}", new { alljs = @".*\.js(/.*)?" });
    routes.Add(new System.Web.Routing.Route("{resource}.css/{*pathInfo}", new System.Web.Routing.StopRoutingHandler()));
    routes.Add(new System.Web.Routing.Route("{resource}.js/{*pathInfo}", new System.Web.Routing.StopRoutingHandler()));

    routes.MapPageRoute(
         "HomeRoute",
         "",
         "~/Default.aspx"
     );

    ////For News
    routes.MapPageRoute("NewsRoute", "{NewsID}/{PageID}/{NewsTitle}", "~/Latest-News-Details.aspx", false,
         new RouteValueDictionary {
                    { "NewsID", "0" },
                    { "PageID", "0"},
                    { "NewsTitle", "News-not-found" }},
         new RouteValueDictionary {   
                    { "NewsID", "[0-9]{1,8}" },
                    { "PageID", "[0-9]{1,8}" }
                }); 
}

同じルーティングが他のWebサイトで機能し、そのような要求を処理するために別のルートを作成するのは、私にとって奇妙なことです。http://www.abc.com

于 2012-11-25T10:54:54.007 に答える