web.config中的URLRewriting不起作用

时间:2013-08-15 05:54:28

标签: asp.net iis url-rewriting

我被要求将一个ASP.NET 4.0网站从GoDaddy移动到Arvixe。我已经使用项目解决方案设置了VS 2012,并将其配置为将站点发布到Arvixe服务器。在web.config中调整数据库连接字符串后,该站点可以正常工作。 叹息

然而,这是一个庞大的网站,拥有庞大的数据库和大量的菜单项。菜单项不起作用 - 我在大多数菜单上都收到HTTP 404 Not Found错误。这些链接与web.config中的url重写有关。这些重写中至少有100个,但我不知道它们为什么不起作用。

以下是一个例子:

  <urlrewritingnet rewriteOnlyVirtualUrls="true" contextItemsPrefix="QueryString" xmlns="http://www.urlrewriting.net/schemas/config/2006/07">
    <rewrites>

       ...

       <add name="mycategory" virtualUrl="^~/my-stuff/(.+)$" redirectMode="Permanent" rewriteUrlParameter="ExcludeFromClientQueryString" destinationUrl="~/mycategory.aspx?rct=$1" ignoreCase="true" />

       ...

    </rewrites>
  </urlrewritingnet>

我已经检查了这些行中的大多数,以确保destinationUrl中指定的.aspx确实存在并确实存在。在上面的例子中,mycategory.aspx存在于根文件夹中。

在重写这些重写之前,我需要配置一些东西吗?喜欢需要启用的东西 - 或者是Arvixe所需的某些支持?顺便说一句,这是安装在Business Class ASP Pro帐户上的。

更新

我觉得很傻,但是我进入了Arvixe的控制面板,并将ASP.NET从4.0更改为4.0 Integrated Pipeline。这解决了上面的问题但导致了不同的问题......

尚未为此网站配置DNS,因此我通过IP地址访问它。此时,主页加载正常,所有菜单项都正常工作。图像加载也很好,但当我点击任何内容并转到新页面时,页面中的所有链接以及菜单项都将IP地址替换为“localhost”,这当然会破坏网站。

例如:

http://123.123.123.123/my-category/<img src="123.123.123.123/images/myimage.png"/>

替换为:

http://localhost/my-category/<img src="localhost/images/myimage.png"/>

有没有人知道如何克服这个问题?

1 个答案:

答案 0 :(得分:0)

我为这个问题弄乱SO而道歉。根据我的更新,将ASP.NET从4.0更改为4.0 Integrated Pipeline解决了我的初始问题。我的第二个问题是通过更改<add key="SiteUrl" value="http://localhost/" />来解决的。

:S

感谢所有想过任何想法的人。希望这篇文章可以帮助其他人。