2013-10-30 57 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

我很抱歉,服务应用程序已经是应用程序,而不是虚拟目录。我已更正原始问题描述 –