Asp.net 如何在web窗体.NET web app下配置嵌套MVC应用程序

Asp.net 如何在web窗体.NET web app下配置嵌套MVC应用程序,asp.net,asp.net-mvc-4,iis-7,Asp.net,Asp.net Mvc 4,Iis 7,目前我有一个.net web表单应用程序,可以在根站点www.mydomain.com 现在,我要做的是部署上述应用程序的MVC.net移动版,并使其响应:www.mydomain.com/mobile 因此,我将移动应用程序复制到inetpub\mobile(父web表单应用程序位于inetpub\myapp,即它们位于同级文件夹中) 然后,我转到IIS 7,在我的www.mydomain.com网站下为移动应用程序创建了一个新的应用程序: 当我测试它时,应用程序加载良好,但当我单击链接时,

目前我有一个.net web表单应用程序,可以在根站点
www.mydomain.com

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

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

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

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

Requested URL: /mobile/Places/Places.aspx

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

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

我甚至尝试将移动应用程序配置文件中的
system.web
system.webServer
标记包装为location elements,并将
inheriteinchildapplications
设置为false,但没有运气:

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

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


有什么想法吗?

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


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

事实证明,父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”
)之后,它开始正常工作。

是的,我没有很好地解释我自己,但是的,我尝试了这个选项,效果很好。我可能会去的。但我真的很想知道为什么它不能以另一种方式工作。为了让事情变得更有趣,我刚刚发现我们的生产环境是按照我尝试的方式设置的。唯一的区别是他们使用的是MVC3(不是4)。你确定那个服务器上安装了mvc吗?是的,我下载了安装程序,并说它已经安装好了。然后我去了程序,找到了2、3和4版本的Microsoft ASP.NET MVC