我有一个用.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>
答案 0 :(得分:0)
在IIS的配置中,您可以指定要使用的.net框架的哪个版本。
在此上下文中,有.net框架的4个版本:1.0,1.1,2.0和4.0
您的第一个问题是IIS未配置为运行framework 4.0
然而,您可能遇到更大的问题,我不确定是否可能,您可能需要IIS 7.5
修改强>
现在已经检查过了。它将起作用,您唯一需要做的就是确保选择框架4作为应用程序池的框架。