2013-05-28 32 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

相關問題