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-01 18:12:21
在“服务器管理器”、“角色和功能”下,WCF类别中缺少"HTTP激活“。我的第二次预感是对的。尽管如此,这个错误有点误导人,所以为了子孙后代的缘故,我将把这个问题留在这里。
https://stackoverflow.com/questions/58189099
复制相似问题