2013-10-30 83 views
0

我有一個WCF服務應用程序託管在IIS 7.5中。 MVC應用綁定到根URL(例如www.myapp.com),而服務位於「www.myapp.com/Services」。服務庫和MVC應用程序參考.Net 4.0。此外,服務應用程序和mvc應用程序存儲在兩個單獨的目錄中(即服務應用程序不在MVC應用程序的子目錄中)。WCF服務使用錯誤的配置文件?

MVC應用程序加載正常。然而,當我加載服務URL,或瀏覽在IIS服務的應用程序目錄,我得到以下錯誤:

Compiler Error Message: CS0234: The type or namespace name 'Mvc' does not exist in the namespace 'System.Web' (are you missing an assembly reference?) 

    Source Error: 



    Line 25:  <namespaces> 
    Line 26:   <add namespace="System.Web.Helpers" /> 
    Line 27:   <add namespace="System.Web.Mvc" /> 
    Line 28:   <add namespace="System.Web.Mvc.Ajax" /> 
    Line 29:   <add namespace="System.Web.Mvc.Html" /> 


Source File: e:\myapp\Web.config Line: 27 

維護組件/項目沒有引用System.Web.Mvc。

它看起來像MVC應用程序web.config(而不是服務web.config)正在對服務應用程序二進制文件進行評估。我已經搜索了近乎和遠的補救辦法,任何幫助,非常感謝。

最後,我的本地IIS實例上不會發生此錯誤。

+0

你有一個虛擬目錄都MVC應用程序和WCF Web服務? – Szymon

+0

不,但包含服務應用程序的虛擬目錄包含在MVC站點 –

回答

1

這是因爲ASP.NET會合並web.config文件中下層次結構。僅僅通過如下MVC中的web.config它包裝禁用system.web部分的繼承:

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

這工作。然而,我們有另一個網絡應用程序和服務應用程序配置類似,它從來沒有產生有問題的錯誤(應用程序是ASP.Net 3.5我相信) –

0

您可以嘗試通過在您的WCF服務配置文件中添加類似以下內容來清除繼承的父配置設置。

<system.web> 
    <pages> 
     <namespaces> 
     <clear/> 
     </namespaces> 
    </pages> 
    </system.web> 

MSDN Description

0

您需要創建包含服務的虛擬目錄的應用程序。

這很簡單,進入IIS管理界面,右鍵單擊「/服務」虛擬目錄,然後選擇「創建應用程序」

+0

我很抱歉,服務應用程序已經是應用程序,而不是虛擬目錄。我已更正原始問題描述 –