2011-07-08 92 views
7

這裏只是一些背景信息。我目前使用的共享與WinHost託管,並具有以下設置主MVC3網站應用程序干擾兒童MVC3網絡應用程序

Shared IIS 
    |______Main Primary MVC3 web app (uses NHibernate & Castle.Windsor for ORM) 
      |_______ Child MVC3 web app (not using NHibernate nor Castle.Windsor as it does not need database access) 

在WinHost,它可以讓我設置應用程序的起點,所以我可以有

/ <= for primary app 
/child <= for the child app 

每個應用程序都有自己的web.config中,所以它就像

/web.config 
/child/web.config 

好,出乎我的意料,看來即使/子文件夾設置爲一個應用程序的起點,它似乎並沒有從父PRIMAR隔離ŸWeb應用程序,因爲當我嘗試加載孩子的應用程序,我得到了臭名昭著的錯誤

無法加載文件或程序集 「Castle.Windsor」或它 的一個依賴。系統找不到 指定的文件。

我試過的解決方法所傾倒的NHibernate相關的庫到/孩子/ bin文件夾,但只能使事情更糟,因爲我也想孩子應用程序中需要安裝額外的NHibernate的配置,即使孩子的應用程序有沒有需要數據庫訪問。

那麼有沒有設置某處(如web.config),我可以強制兒童應用程序與父應用程序隔離?

我認爲最後的手段是將兒童網頁應用程序丟掉,並將其轉變爲主要網絡應用程序下的「區域」,但這並不理想,因爲這兩個網絡應用程序彼此不相關在所有的,針對不同的觀衆等

注:應該不是路由的問題,是因爲兩個原因的情況下 1. WinHost設置/子文件夾作爲應用程序的起始點 2.在主Web應用程序,我已經忽略了RegisterRoutes裏面的孩子()

routes.IgnoreRoute("child"); 
routes.IgnoreRoute("{folder}/{*pathinfo}", new { folder = "child" }); 

那麼,3小時後在這方面工作,我感到不知所措。任何建議,非常感謝。讓我知道你是否需要看到任何配置。先謝謝你!

+0

的http://計算器。com/questions/9195193 /奇怪的程序集名稱錯誤,而訪問網站從手機/ 92​​97327#9297327 – user960567

回答

1

我最終通過將子應用修改爲父應用下的Area來解決此問題。然後,我禁用/子文件夾的應用程序起點,並從服務器中刪除/子文件夾。

它現在正在工作,儘管我對解決方法並不是太興奮。

+0

是的,這不是一個解決方案,滿足了這個問題或我的要求,不幸的是。 –

1

問題是.config繼承。但是你可以禁用,使用<location>元素:

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

所以基本上你會在你的配置對於任何特定父應用程序,但在孩子不習慣看,並關閉它的繼承。

下面是一些更多的信息的文章:http://www.colincochrane.com/post/2007/11/Disabling-Configuration-Inheritance-For-ASPNET-Child-Applications.aspx

+0

謝謝,但這似乎不適用於ASP.NET MVC 3(也許是ASP.NET MVC的早期版本)。我認爲這是路由問題,但我不知道需要做什麼才能使其工作。 –

+0

@seanwoodward該設置是[在.NET 2-4中可用](http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.inheritinchildapplications.aspx),你如何使用它?您必須重新組織整個配置才能使用它。我已經在嵌套應用程序(一個是MVC3)的幾個不同的網站上工作,我必須解決.config繼承問題,這對我來說是個竅門。 –

+0

我也使用過該設置,但子站點未能響應請求。父站點設置爲忽略路由時的事件。你記得你必須做什麼才能讓MVC 3網站正常工作嗎? –