我在IIS 7.5中托管了一个WCF服务应用程序。 MVC应用程序绑定到根URL(例如,www.myapp.com),而服务位于“www.myapp.com/Services”。服务库和MVC应用程序引用.Net 4.0。此外,服务应用程序和mvc应用程序存储在两个单独的目录中(即,服务应用程序不在MVC应用程序的子目录中)。
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 :(得分:1)
这是因为ASP.NET将web.config文件合并到层次结构中。只需通过将其包含在MVC的web.config中来禁用system.web
部分的继承,如下所示:
<location path="." inheritInChildApplications="false">
<system.web>
........
</system.web>
</location>
答案 1 :(得分:0)
您可以尝试通过向WCF服务配置文件添加类似内容来清除继承的父配置设置。
<system.web>
<pages>
<namespaces>
<clear/>
</namespaces>
</pages>
</system.web>
答案 2 :(得分:0)
您需要为包含该服务的虚拟目录创建一个应用程序。
这很简单,转到IIS管理界面并右键单击“/ Services”虚拟目录并选择“创建应用程序”