WCF服务运行在ASP.NET 4.52下,Silverlight客户端。这个应用程序曾经在Windows2008Windows上运行。现在,我已经在Windows 2016服务器上设置了它,并且第一次使用错误405方法调用错误是不允许的。这里的方法是POST。错误描述如下:
405 - HTTP动词用于访问此页面是不允许的。
在基于Windows 2008的例子中,它也是POST,但是后端没有问题。该服务在Windows auth中使用HTTPS。
相关的Web.config位是:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="winAuthBasicHttpBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647">
<readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
<security mode="Transport">
<transport clientCredentialType="Ntlm"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="Foo.Web.Services.FooBehavior">
<serviceMetadata httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="Foo.Web.Services.FooBehavior" name="Foo.Web.Services.FooService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="winAuthBasicHttpBinding" contract="Foo.Web.Services.IFooService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</service>
</services>
</system.serviceModel>除了[OperationContract]之外,错误方法没有其他注释。该接口只具有[ServiceContract]。服务类有:
[WcfErrorBehavior]
[WcfSilverlightFaultBehavior]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]方法没有参数可能是相关的;我相信WCF使用GET的最新版本也适用于这些参数。这个应用程序很老了。
错误通过一个通用的HTTP客户端复制,它并不是特定于Silverlight前端的。
看起来.NET版本在机器级WCF配置上存在差异。更不可能的是,Windows 2016框中缺少了Windows组件。
编辑:已启用的请求跟踪,得到了一些东西。有一个EXECUTE_REQUEST_HANDLER发送给StaticFileModule的通知。WCF服务绝对不是静态文件。
发布于 2019-10-02 03:17:10
无论如何,我想回复这个帖子。对于遇到类似问题的人来说,这可能是有用的。
@Seva Alekseyev,正如您所提到的,对于托管由IIS中的Webhttpbinding创建的WCF服务,以及一些其他协议,例如Nettcpbinding,我们应该启用某些类型的Windows功能。

对于NetTcpbinding,我们还需要启用下面的Windows功能。

如果有什么需要我帮忙的,请随时通知我。
发布于 2019-10-01 18:12:21
在“服务器管理器”、“角色和功能”下,WCF类别中缺少"HTTP激活“。我的第二次预感是对的。尽管如此,这个错误有点误导人,所以为了子孙后代的缘故,我将把这个问题留在这里。
https://stackoverflow.com/questions/58189099
复制相似问题