2013-03-02 69 views
0

我知道这个问题已经被问了很多次,并且也被大量的回复,但是我遇到了一些非常奇怪的情况,就像昨天我的代码在生产服务器和开发机器上工作一样,但是当我试图今天运行我的网站,它在我的404上笑我使用ASP.NET 4在IIS 6上进行URL路由/ URL重写? (没有IIS访问)

我被困在路由/重新编写SEO友好的URL到我的网站的原始网页,无法改变任何在IIS。 首先,我尝试使用UrlRewriter.NET,它在我的开发计算机(Windows Server 2008,IIS 7)上工作,但没有在登台服务器(Windows Server 2003 R2,IIS 6)上工作,因为它抛出了404错误。然后,我尝试使用UrlRewriting.NET,这也是我记得的。

编辑:当我试图用他们我的Visual Studio ASP.NET开发服务器上工作的UrlReWriting.NET但不是在IIS

然后我的一个同事和一点搜索说服我使用URL路由,而不是URL重写,所以我就到ASP.NET URL路由里面的Global.asax

protected void Application_Start(object sender, EventArgs e) 
    { 
     RegisterRoutes(RouteTable.Routes); 
    } 

    void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapPageRoute("GalleryCategory", "Gallery/", "~/Gallery.aspx"); 
     routes.MapPageRoute("Gallery", "Gallery/{*image}", "~/Gallery.aspx"); 
    } 

下面的代码是的,我也尝试下面在web.config中,但没有使用的解决方案

<modules runAllManagedModulesForAllRequests="true"> 
     <remove name="UrlRoutingModule"/> 
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </modules> 

但他们也让我无所适从所有那些404s。

PS。我的网站上只有一个页面需要SEO友好的URL,页面名称是Gallery.aspx,PathInfo/QueryString参数是动态的。

重要提示:我的生产服务器是Windows Server 2003与IIS 6和我的机器在Windows Server 2008 IIS 7

回答

0

使用全局文件此路由代码,应用程序启动,该参数: 如WWW .domain.com /画廊/ imgFile1/

void Application_Start(object sender, EventArgs e) 
{ 
    Routes.MapPageRoute("GalleryFile", "Gallery/{CatID}", "~/Gallery.aspx"); 
} 

为重写库类别页面,把这段代码Web.Config中:

<system.web> 
<urlMappings enabled="true"> 
<add url="~/Gallery/" mappedUrl="~/Gallery.aspx" /> 
</urlMappings> 
</system.web> 
+0

nope不工作,仍然扔404: – 2013-03-03 09:24:09

0

好吧,听起来很疯狂,但在所有这些搜索和拉我的头发字面上我给了它一枪,我确实重置我的生产IIS运行近30个网站(我不愿意尝试任何疯狂的事情,包括IIS重置,但后所有事实证明,只是重置IIS的伎俩使用命令iisreset