2013-05-28 31 views
3

目前,我有一个.NET Web窗体应用程序根站点下正常工作现在www.mydomain.com如何配置下的网络嵌套的MVC应用程序形成的.NET Web应用程序

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

所以我复制了移动应用inetpub\mobile(父Web窗体应用程序驻留在inetpub\myapp,即它们都位于同级文件夹)。

然后,我去到IIS 7下我www.mydomain.com网站上创建了移动应用的新应用:

IIS configuration

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

Requested URL: /mobile/Places/Places.aspx 

Error message

在我看来,即使应用程序位于不同的文件夹的移动版本是从某种程度上继承Web窗体应用程序(父)的设置。

当我创建一个子mobile.mydomain.com,但它真正的错误我,我不能找到除了爱情之外,使其在www.mydomain.com/mobile工作的移动应用程序实际上工作正常。

我甚至尝试与位置元素设置inheritInChildApplications为假移动应用程序的配置文件,但没有运气包裹system.websystem.webServer标签:

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

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

任何想法?

+0

您确定在该服务器上安装了mvc吗? –

+0

是的,我下载了安装程序并表示已经安装。然后,我去了程序,发现微软ASP.NET MVC从2,3和4 – Ulises

回答

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"规则),它开始工作得很好。

0

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

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

+0

是的,我没有解释我的自我,但是我尝试了这个选项,它工作正常。我可能会为此而努力。但我真的想知道为什么它不会以其他方式工作。为了让事情更有趣,我发现我们的生产环境是按照我想要做的方式设置的。唯一的区别是他们正在使用MVC3(而不是4) – Ulises

相关问题