2010-12-28 19 views
0

フレームワーク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が表示されます。

答えて

0

私は、3.5 System.Web.RoutingはClassic .NET AppPoolではまったく動作しないと思います。 Classic .NET AppPoolを使用する必要がある理由は何ですか?

Classic .NET AppPoolを使用する必要がある場合は、IIS URL Rewrite 2を試してみてください。