目前,我有一个.net网络表单应用,可以在根网站www.mydomain.com
现在,我要做的是部署上面的应用程序的MVC.net移动版本并使其响应:www.mydomain.com/mobile
所以我将移动应用程序复制到inetpub\mobile
(父网页表单应用程序位于inetpub\myapp
,即它们位于兄弟文件夹中)。
然后,我转到IIS 7并在我的www.mydomain.com
网站下为移动应用创建了一个新应用程序:
当我测试它时,应用程序加载正常但是当我点击链接时,例如/mobile/Places/Places
,请求的URL似乎由Web表单而不是MVC的路由处理,因为错误添加了{{1 }} extension:
aspx
在我看来,即使应用程序位于不同的文件夹中,移动版本也会以某种方式从网络表单应用程序(父级)继承设置。
移动应用实际上在我创建子域时工作正常 Requested URL: /mobile/Places/Places.aspx
但它确实让我感到困惑,我无法找到它使其在mobile.mydomain.com
上运行。
我甚至尝试将位置元素设置为www.mydomain.com/mobile
的移动应用配置文件中的system.web
和system.webServer
标记包装为false,但没有运气:
inheritInChildApplications
有什么想法吗?
答案 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配置虚拟主机。