3

目前我有一个在根站点下正常工作的 .net 网络表单应用程序www.mydomain.com

现在,我要做的是部署上述应用程序的 MVC.net 移动版本并使其响应:www.mydomain.com/mobile

因此,我将移动应用程序复制到inetpub\mobile(父 Web 表单应用程序位于inetpub\myapp,即它们位于同级文件夹中)。

然后,我转到 IIS 7 并在我的www.mydomain.com站点下为移动应用程序创建了一个新应用程序:

IIS 配置

当我测试它时,应用程序加载正常,但是当我单击一个链接时,例如/mobile/Places/Places,请求的 URL 似乎由 Web 表单而不是 MVC 的路由处理,因为错误添加了aspx扩展名:

Requested URL: /mobile/Places/Places.aspx

错误信息

在我看来,即使这些应用程序位于不同的文件夹中,移动版本也以某种方式继承了 Web 表单应用程序(父级)的设置。

当我创建一个子域时 ,移动应用程序实际上运行良好,mobile.mydomain.com但它真的让我很烦恼,我无法找到让它运行www.mydomain.com/mobile

我什至尝试将system.webandsystem.webServer标记包装在移动应用程序配置文件中,并将位置元素设置inheritInChildApplications为 false 但没有运气:

<location path="." inheritInChildApplications="false">
 <system.web>

<location path="." inheritInChildApplications="false">
 <system.webServer>

有任何想法吗?

4

2 回答 2

1

事实证明,父 Web 表单应用程序的配置文件有一个 URL 重写元素,如下所示:

<rewrite>
    <rules>
        <clear />
        ...
        <rule name="RewriteASPX" enabled="true">
            <match url="^([a-zA-Z0-9/_. -]+)$" ignoreCase="false" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                <add input="{URL}" pattern="^.*\.(ashx|axd|css|gif|png|jpg|jpeg|js|flv|f4v)$" negate="true" /> 
            </conditions>
            <action type="Rewrite" url="{R:1}.aspx" />
        </rule>
    </rules>
</rewrite>

在我为移动网站添加了一个例外(带有 的规则stopProcessing="true")后,它开始工作得很好。

于 2013-05-29T14:52:50.643 回答
0

您是否考虑过为您的移动应用程序创建一个子域?嵌套的 web.configs 可能很难管理,尤其是在父应用程序和子应用程序之间的路由规则不同的情况下。如果有人知道如何使 web.configs 一起运行,那么我很想看看它是如何完成的。但是,使用子域,您可以创建一个新网站并将其添加到 IIS:m.mydomain.com

该网站将独立于主网站运行,因为它不会是主网站的子应用程序。您需要在 DNS 设置中添加一条记录,该记录指向与您的主域名相同的 IP 地址,并且只需通过 IIS 配置虚拟主机。

于 2013-05-28T20:57:38.063 回答