2016-10-07 109 views
1

我有一個天藍色的網站(MVC)配置和一切工作正常,直到我試圖添加一個WebAPI項目到部署到天藍色的解決方案。部署在天藍色的應用程序使用錯誤的web.config

我的虛擬目錄映射看起來像

  1. 虛擬-----物理--- IsApplication
  2. /-----網站\ wwwroot的\ ------ IsApplicaiton( yes)[Path for mvc project] Application
  3. /api ---- site \ services \ ------- IsApplication(no)
  4. /api/code ------ site \ services \ code \ ------- IsApplication(是)[WebAPI項目的路徑]

MVC應用程序工作正常,但WebAPI應用程序(它是VS WebApplication - > WebAPI2的空腳手架)不是。在修改WebApi的web.config以禁用自定義錯誤頁面後,我發現問題在於MVC應用程序的web.config中包含的命名空間(當然,WebAPI項目不具有對它的引用,它不應該)。但是,爲什麼WebAPI甚至會因爲坐在MVC應用程序中的web.config而感到困擾呢?

+1

如果你在同一個運行的Web API site/apppool作爲MVC,然後在App_Start()方法中需要優先順序。但這聽起來像你沒有那樣做。你能否包括例外細節? –

+0

我不知道Azure中的apppools以及它是如何工作的。但是我想要做的是在一個站點下託管幾個應用程序。 MVC應該是WebAPI應用程序的客戶端。據我瞭解web.config繼承它應該從父文件夾繼承設置而不是父虛擬目錄。 – user2184057

回答

1

Web.config在應用程序內設置「瀑布」。因此,如果您有一個應用程序託管在根目錄'/',然後託管了另一個應用程序(即'/ api/code'),則根Web應用程序的web.config中的所有設置都將添加到子應用程序的web.config。應用程序的物理位置與此行爲無關。所有這些都是由虛擬目錄結構驅動的。這就是爲什麼你在你的WebAPI應用程序中看到與你的MVC應用程序的命名空間有關的錯誤。

爲了解決這個問題,你應該使用<remove name="..." /><clear />標籤或在你的WebAPI的web.config inheritInChildApplications屬性刪除被從你的MVC應用程序傳下來的設置。如何做到這一點的例子可以在本作中找到SO回答:https://stackoverflow.com/a/5968658/6387007

有關的web.config繼承你可以看看這個MSDN文章太多信息:https://msdn.microsoft.com/en-us/library/ms178685.aspx

+0

謝謝你們。我確信它是物質結構的繼承,而不是虛擬結構。 – user2184057

相關問題