如何在Web窗体.NET Web应用程序下配置嵌套的MVC应用程序

时间:2013-05-28 19:43:28

标签: asp.net asp.net-mvc-4 iis-7

目前,我有一个.net网络表单应用,可以在根网站www.mydomain.com

下正常使用

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

所以我将移动应用程序复制到inetpub\mobile(父网页表单应用程序位于inetpub\myapp,即它们位于兄弟文件夹中)。

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

IIS configuration

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

aspx

Error message

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

移动应用实际上在我创建子域时工作正常 Requested URL: /mobile/Places/Places.aspx 但它确实让我感到困惑,我无法找到它使其在mobile.mydomain.com上运行。

我甚至尝试将位置元素设置为www.mydomain.com/mobile的移动应用配置文件中的system.websystem.webServer标记包装为false,但没有运气:

inheritInChildApplications

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

事实证明,父网络表单应用程序的配置文件有一个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"的规则)后,它开始正常工作。

答案 1 :(得分:0)

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

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