【问题标题】:How to configure nested MVC app under web forms .NET web app如何在 Web 表单 .NET Web 应用程序下配置嵌套 MVC 应用程序
【发布时间】:2013-05-28 19:43:27
【问题描述】:

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

现在,我正在尝试做的是部署上述应用程序的 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

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

移动应用程序实际上在我创建子域时运行良好mobile.mydomain.com,但它确实让我烦恼,我无法让它在www.mydomain.com/mobile上运行。

我什至尝试将system.websystem.webServer 标签包装在移动应用配置文件中,并将位置元素设置inheritInChildApplications 设置为false,但没有成功:

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

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

有什么想法吗?

【问题讨论】:

  • 你确定那个服务器上安装了mvc吗?
  • 是的,我下载了安装程序,说已经安装好了。然后我去Programs,发现Microsoft ASP.NET MVC从2,3和4开始

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


【解决方案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" 规则)后,它开始正常工作。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 是的,我没有很好地解释自己,但是是的,我尝试了该选项并且效果很好。我可能会去。但我真的很想知道为什么它不能以另一种方式工作。为了让事情变得更有趣,我刚刚发现我们的生产环境是按照我尝试的方式设置的。唯一的区别是他们使用的是 MVC3(不是 4)
    猜你喜欢
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 2011-02-07
    • 2010-12-29
    • 2019-04-21
    相关资源
    最近更新 更多