URL使用子域重写IIS 7.0上的问题,IIS 7.5中不存在

时间:2011-07-14 18:35:45

标签: asp.net iis url iis-7 url-rewriting

我正在构建这个需要几个子域的asp.net应用程序。它们将共享相同的代码库,但我在其自己的子文件夹中为每个子域分别使用.aspx,如下所示:

admin.domain.com -> domain.com/admin
user.domain.com -> domain.com/user
...

使用以下重写规则在我的开发箱(win7,iis 7.5)上一切正常:

<rule name="admin.domain.com" stopProcessing="true">
   <match url=".*" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^admin.domain.com$" />
        <add input="{PATH_INFO}" pattern="^/images/" negate="true" />
        <add input="{PATH_INFO}" pattern="^/handlers/" negate="true" />
        <add input="{PATH_INFO}" pattern="^/aspnet_client/" negate="true" />
        <add input="{PATH_INFO}" pattern="^/webservices/" negate="true" />
        <add input="{URL}" pattern="\.axd$" negate="true" />
      </conditions>
      <action type="Rewrite" url="\admin\{R:0}" />
</rule>

当我将我的版本推送到运行Win 2008 R1的生产时,在IIS 7.0上重写了中断。我看到页面源中的<form>标记指向action="admin/",而在7.5上指向根目录。因此,当我发布表单时,我会得到404,因为每次重写都没有/ admin子文件夹。

我有什么办法可以解决这个问题吗?我想省略升级到R2只是为了解决这个问题。我可以单独升级URL Rewrite模块吗?我可以使用不同的重写规则修复此问题吗?

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,出于某些原因在iis 7.0上,您必须在定义表单的地方添加以下内容。在我的情况下,它是我的母版页中的Page_Load。希望这可以帮助。

form1.Action = Request.RawUrl