フレームワーク3.5のWebサイトとClassic.NET AppPool上で動作するIIS上でURLルーティング(System.Web.Routing)を使用しています。Classic .NET AppPoolのルーティングとWebSiteの問題
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
< /assemblies>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpModules>
私のGlobal.asaxのは、このようなものです::
protected void Application_Start(object sender, EventArgs e)
{
Debugger.Break();
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add("BikeSaleRoute", new Route
(
"bikes/sale",
new CustomRouteHandler("~/Contoso/Products/Details.aspx")
));
routes.Add("Teste", new Route("teste", new CustomRouteHandler("~/Teste.aspx")));
}
ですから、私のCustomRouteHandlerです:
public class CustomRouteHandler : IRouteHandler
{
public CustomRouteHandler(string virtualPath)
{
this.VirtualPath = virtualPath;
}
public string VirtualPath { get; private set; }
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
HttpContext.Current.RewritePath(String.Format("{0}", VirtualPath));
var page = BuildManager.CreateInstanceFromVirtualPath
(VirtualPath, typeof(Page)) as IHttpHandler;
return page;
}
}
私はアドレスのローカルホストにアクセスするときに/私のweb.configファイルには、このようなものですWebSiteTesteRoteamento /、サイトが読み込まれます。しかし私がアドレスlocalhost/WebSiteTesteRoteamento/bikes/sale/localhost/WebSiteTesteRoteamento/testeにアクセスすると、エラー404が表示されます。