【问题标题】:WCF service using wrong config file?WCF 服务使用错误的配置文件?
【发布时间】:2013-10-30 20:41:21
【问题描述】:

我有一个托管在 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 实例上没有出现这个错误。

【问题讨论】:

  • 您是否在一个虚拟目录中同时拥有 MVC 应用和 WCF Web 服务?
  • 否,但包含服务应用程序的虚拟目录包含在 MVC 站点中

标签: c# wcf iis web-config


【解决方案1】:

这是因为 ASP.NET 将 web.config 文件合并到层次结构中。只需通过将 system.web 部分包装在 MVC 的 web.config 中来禁用继承,如下所示:

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

【讨论】:

  • 这行得通。但是,我们有另一个类似配置的 Web 应用程序和服务应用程序,它从未产生过有问题的错误(我相信该应用程序是 ASP.Net 3.5)
【解决方案2】:

您可以尝试通过在 WCF 服务配置文件中添加类似内容来清除继承的父配置设置。

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

MSDN Description

【讨论】:

    【解决方案3】:

    您需要为包含该服务的虚拟目录创建一个应用程序。

    这个很简单,进入IIS管理界面,右键“/Services”虚拟目录,选择“创建应用程序”

    【讨论】:

    • 抱歉,服务应用程序已经是应用程序,而不是虚拟目录。我已经更正了原始问题描述
    猜你喜欢
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    相关资源
    最近更新 更多