0

ご挨拶、

Visual Studio 2010 と ASP.NET 4.0 を使用して、System.Web.Routing の新しいルーティング機能を使用する WebForms プロジェクトを構築しています。ソリューションをビルドして VS.NET のデバッグ環境内から実行すると、".aspx" 拡張子を含む RouteUrl のルートのみが PhysicalFile に適切にルーティングされます。他の URL に対して行われたリクエストは、処理のためにルーティング エンジンによって「検出」されていないようです。以下の場合、「シナリオ 1」は 404 を示し、「シナリオ 2」は正常に動作します。

ご指導いただければ幸いです。

私のglobal.asaxの関連コードは次のとおりです。

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup

    // Register Routes
    RegisterRoutes();
}

void RegisterRoutes()
{
    System.Web.Routing.RouteTable.Routes.MapPageRoute("Scenario1", "scenario1/{option1}", "~/About.aspx");  
    System.Web.Routing.RouteTable.Routes.MapPageRoute("Scenario2", "scenario2.aspx", "~/About.aspx");
}

どうぞよろしくお願いいたします。

モーメントサーファー

4

1 に答える 1

1

この投稿を読んだ後、私の問題を見つけました:

Asp.Net System.Web.Routing は、末尾に .aspx がない限り URL をルーティングしません

私の VS2010 ソリューションには、Web、ビジネス レイヤー クラス、データ アクセス レイヤー クラスなど、いくつかのプロジェクトが含まれています。私の Web プロジェクトは「SystemName.WebForms」と呼ばれていました。Web プロジェクト名のピリオドは、奇妙な理由で ASP.NET 4.0 の WebForm のルーティングを妨げます。プロジェクトの名前を「SystemName_WebForms」に変更すると、すべてのルートが正しく機能します。

Web プロジェクト名にピリオドを含む:

  • 「scenario2」と「scenario4」のみ動作

Web プロジェクト名にピリオドがない場合:

  • すべてのシナリオが機能します

ルート:

    RouteTable.Routes.MapPageRoute("scenario1", "scenario1/{option1}", "~/About.aspx");
    RouteTable.Routes.MapPageRoute("scenario2", "scenario2.aspx", "~/About.aspx");
    RouteTable.Routes.MapPageRoute("scenario3", "scenario3", "~/About.aspx");
    RouteTable.Routes.MapPageRoute("scenario4", "scenario4.xxx", "~/About.aspx");

彼の質問に対する答えを見つけて投稿してくれた@vincentw56に感謝します!!

モーメントサーファー

于 2010-10-31T03:14:15.217 に答える