0

我知道这个问题已经被问了很多次,也被回答了很多次,但是我遇到了一些非常奇怪的情况,因为昨天我的代码在我的生产服务器和开发机器上都可以工作,但是当我今天尝试运行我的网站时,它用它的 404 嘲笑我

我被困在我网站原始页面的路由/重写 SEO 友好 URL 上,无法在 IIS 上进行任何更改。首先,我尝试使用 UrlRewriter.NET,它可以在我的开发机器(Windows Server 2008、IIS 7)上运行,但不能在临时服务器(Windows Server 2003 R2、IIS 6)上运行,因为它会引发 404 错误。然后我尝试使用 UrlRewriting.NET,它也和我记得的一样。

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

然后我的一位同事和一些搜索说服我使用 Url Routing 而不是 URL ReWriting,所以我在 Global.asax 中使用以下代码进入 ASP.NET Url Routing

    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>

但他们也让我在所有这些 404 中无处可去。

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

重要提示:我的生产服务器是带有 IIS 6 的 WINDOWS SERVER 2003,而我的开发机器是 WINDOWS SERVER 2008 IIS 7。

4

2 回答 2

0

好吧,这听起来可能很疯狂,但经过所有这些搜索和拉扯我的头发后,我试了一下,我确实重置了运行近 30 个网站的生产 IIS(我不愿意尝试任何疯狂的事情,包括重置 IIS,但毕竟事实证明,只需重置 IIS 就可以使用命令iisreset

于 2013-03-03T16:19:35.430 回答
0

在全局文件应用程序启动中使用此路由代码作为参数:例如 www.domain.com/gallery/imgFile1/

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

至于重写 Gallery Category 页面,将这段代码放在 Web.Config 中:

<system.web>
<urlMappings enabled="true">
<add url="~/Gallery/"  mappedUrl="~/Gallery.aspx" />
</urlMappings>
</system.web>
于 2013-03-03T09:16:23.397 回答