首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WCF,Windows 2016上的错误405,但2008年没有

WCF,Windows 2016上的错误405,但2008年没有
EN

Stack Overflow用户
提问于 2019-10-01 16:40:56
回答 2查看 236关注 0票数 0

WCF服务运行在ASP.NET 4.52下,Silverlight客户端。这个应用程序曾经在Windows2008Windows上运行。现在,我已经在Windows 2016服务器上设置了它,并且第一次使用错误405方法调用错误是不允许的。这里的方法是POST。错误描述如下:

405 - HTTP动词用于访问此页面是不允许的。

在基于Windows 2008的例子中,它也是POST,但是后端没有问题。该服务在Windows auth中使用HTTPS。

相关的Web.config位是:

代码语言:javascript
复制
    <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]。服务类有:

代码语言:javascript
复制
    [WcfErrorBehavior]
    [WcfSilverlightFaultBehavior]    
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

方法没有参数可能是相关的;我相信WCF使用GET的最新版本也适用于这些参数。这个应用程序很老了。

错误通过一个通用的HTTP客户端复制,它并不是特定于Silverlight前端的。

看起来.NET版本在机器级WCF配置上存在差异。更不可能的是,Windows 2016框中缺少了Windows组件。

编辑:已启用的请求跟踪,得到了一些东西。有一个EXECUTE_REQUEST_HANDLER发送给StaticFileModule的通知。WCF服务绝对不是静态文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-02 03:17:10

无论如何,我想回复这个帖子。对于遇到类似问题的人来说,这可能是有用的。

@Seva Alekseyev,正如您所提到的,对于托管由IIS中的Webhttpbinding创建的WCF服务,以及一些其他协议,例如Nettcpbinding,我们应该启用某些类型的Windows功能。

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

如果有什么需要我帮忙的,请随时通知我。

票数 0
EN

Stack Overflow用户

发布于 2019-10-01 18:12:21

在“服务器管理器”、“角色和功能”下,WCF类别中缺少"HTTP激活“。我的第二次预感是对的。尽管如此,这个错误有点误导人,所以为了子孙后代的缘故,我将把这个问题留在这里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58189099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档