通常の Web フォーム プロジェクト (非 MVC) があり、MapPageRoute と RedirectToRoute のシナリオを正常に実装しました。クエリ文字列を変換しているため (たとえば、?filter=112 を /my-friendly-url に)、ページ ルーティングはデータベース ルックアップによって行われます。VWD 2010 Express と含まれている ASP.NET 開発サーバーを実行している私の開発マシンで問題なく動作します。ASP.NET のバージョンは 4.0.30319.272 です。ただし、実稼働 (iis7) ボックスでプロジェクトを実行すると、マップされたページでページが見つからないというエラーが発生します。残りのサイト/ページは正常に動作します。私の直感では、ページ処理が問題の根本にあると思いますが、それが何であるか、またはその理由がわかりません。これは、iis7 がディレクトリとファイル名を処理する方法と、私のプログラムが物理的な .aspx をディレクトリ スタイルの名前にルーティングすることから生じる可能性がある干渉に関係している可能性があります。私のiis7とウェブ。
これが私の global.asax の抜粋です。
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Clear();
routes.RouteExistingFiles = false;
routes.Ignore("{resource}.axd/{*pathInfo}"); //ignore axd files, prevents javascript/routing collisions
routes.MapPageRoute("Education", "{category}/{section}", "~/product/education/default.aspx");
routes.MapPageRoute("EducationLanding", "{category}", "~/product/education/default.aspx");
}
Web.config: のハンドラー セクション
<handlers>
<remove name="StaticFile" />
<remove name="PageHandlerFactory-Integrated-4.0" />
<add verb="*" path="ajax/*.ashx" name="Ajax" type="Ajax.PageHandlerFactory, Ajax" />
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
</handlers>
前もって感謝します、ジョン