无法在IIS7中正确托管WCF服务

时间:2009-11-09 09:15:48

标签: asp.net-mvc wcf visual-studio-2010-beta-2

我有一个用.NET 4.0编写的WCF服务库。我在同一解决方案中有一个WCF应用程序(为了在IIS中托管此服务)。它包含WCF库程序集引用和一个指向该库服务的service.svc文件以及一个web.config,它是WCF服务库的app.config的副本。 WCF应用程序设置为在IIS7中托管服务(已设置虚拟目录)。相同的解决方案包含一个ASP.NET Webforms解决方案,我已经添加了一个指向我在IIS中托管的WCF服务的服务引用(如上所述)。

当我启动这个ASP.NET Web应用程序的一个实例时,我收到一条消息,说“已经托管了WCF服务”,并且ASP.NET应用程序可以正确地从中访问数据。但是,当我尝试通过添加到同一台机器上的MVC 2 Web应用程序的服务引用访问此数据时,在另一个解决方案中(指向IIS中托管的服务),我得到一个“远程服务器返回错误:( 405)方法不允许。“协议异常。但是,如果我手动调用我用于从其他解决方案托管WCF服务库的WCF应用程序的实例,则MVC应用程序能够访问服务数据。

我使用VS2010 Beta 2作为我的开发IDE。我一直坚持这个问题一段时间了。任何帮助,将不胜感激。

我的服务配置如下: -

<system.serviceModel>
<services>
  <service behaviorConfiguration="CruxServices.BasicSearchServiceBehavior"
    name="CruxServices.BasicSearch.BasicSearch">
    <endpoint address="" binding="wsHttpBinding" name="WSBindingEndpoint" bindingConfiguration="WSBindingConfig"
      contract="CruxServices.BasicSearch.Interfaces.IPropertyListFilter">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" name="MexEndpoint"
      contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost/CruxServices" />
      </baseAddresses>
    </host>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="CruxServices.BasicSearchServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <wsHttpBinding>
    <binding name="WSBindingConfig">
      <security mode="None">
        <transport clientCredentialType="None"/>
        <message establishSecurityContext="false"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

1 个答案:

答案 0 :(得分:0)

在IIS的配置中,您可以指定要使用的.net框架的哪个版本。

在此上下文中,有.net框架的4个版本:1.0,1.1,2.0和4.0

您的第一个问题是IIS未配置为运行framework 4.0

然而,您可能遇到更大的问题,我不确定是否可能,您可能需要IIS 7.5

修改

现在已经检查过了。它将起作用,您唯一需要做的就是确保选择框架4作为应用程序池的框架。