3

system.web.routing を機能させる方法に関するこれらの記事をすべて読みましたが、これらの記事はすべて localhost:port で説明しています。ローカル マシンではこれを機能させることができますが、サイトをサーバーにアップロードするとすぐに、何をしてもルーティングが機能しなくなります。

最初は拡張子(.aspx)なしで試していましたが、すべての努力の結果、あきらめて拡張子を追加しましたが、それでもサーバーでは機能しません。

どんな助けでも大歓迎です。

サンプル:

global.ascx

Route test = new Route("home.aspx", new TestRoutingHandler());
Routes.Add(test); 

ルーティング ハンドラで

public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
    string virtualPath = string.Empty;
    Route route = (Route)requestContext.RouteData.Route;
    virtualPath = "~/Default.aspx";
    return (Page)BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page));
}

httpModules の下の web.config 内

add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 

これは非常に単純で、ローカル マシンでは機能しますが、Web サーバーでは機能しません。

4

2 に答える 2

2

IIS7+ の場合、web.config のセクションに追加すると、突然すべてが機能することがわかりました。

<modules runAllManagedModulesForAllRequests="true" />

Cassini Web サーバーで実行されている VS のように混乱しますが、問題なく動作しました。

于 2010-12-11T17:38:34.940 に答える
0

Web サーバーが ASP.NET (ワイルドカード ハンドラーとも呼ばれます) を使用してすべての要求を処理するように構成されていることを確認します。そうでない場合、要求された正確なパスがディスク上の物理ファイルに対応し、拡張子が .aspx の場合にのみ、ASP.NET を介して要求を処理します。明らかに、ルーティングの概念は最初の条件、通常は 2 番目の条件を完全に満たしません。

Phil Haack は、IIS 6でこれを行う方法について優れたウォークスルーを提供しています。

IIS 7の場合、web.config の system.webServer で指定された正しいモジュールとハンドラーが必要です。

于 2009-05-23T00:25:53.453 に答える