通过禁用匿名身份验证来解决 WCF REST 服务问题

Issue with WCF REST Service by disabling Anonymous Authentication

The authentication schemes configured on the host ('IntegratedWindowsAuthentication') do not allow those configured on the binding 'BasicHttpBinding' ('Anonymous'). Please ensure that the SecurityMode is set to Transport or TransportCredentialOnly. Additionally, this may be resolved by changing the authentication schemes for this application through the IIS management tool, through the ServiceHost.Authentication.AuthenticationSchemes property, in the application configuration file at the element, by updating the ClientCredentialType property on the binding, or by adjusting the AuthenticationScheme property on the HttpTransportBindingElement.

我们有一个托管在 IIS 7.5 上的 WCF Rest 服务 如果启用了匿名身份验证(在 IIS 中),我们就可以浏览该服务。

但如果 IIS 上的匿名身份验证被禁用,则会出现上述错误消息。

我们正在使用 webHttpBinding 并使用以下定义进行绑定

<binding name="ExternalServicesRestBinding" closeTimeout="10:01:00" openTimeout="10:01:00" receiveTimeout="10:10:00" sendTimeout="10:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" transferMode="Buffered" useDefaultWebProxy="true">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
          </security>
        </binding>

端点行为为

 <behavior name="endpointBehaviourForRestService">
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
          <webHttp />
        </behavior>

请提供您认为可以解决问题的任何建议或线索?

提前致谢。

拉杰库玛。

我在申请中遇到过类似的问题。

我对该服务的 service behaviorConfigurationname 有疑问。我有正确的如下。这解决了我的问题。

示例:

<system.serviceModel>
    <services>
      <service behaviorConfiguration="ServiceBehavior" name="service_namespace.service_Class" >

还有一点是因为您正在实施 REST 服务,我们需要将 Factory="System.ServiceModel.Activation.WebServiceHostFactory" 添加到 .svc 文件。 (你得到一个 'Endpoint not found' 错误,但是当你正确调用它时服务工作正常。如前所述,我在 .NET 4.6(简化的 WCF 配置)中使用默认的 Web.config,所以我可能还需要添加端点详细信息才能再次工作)。

请检查您的配置设置和 svc 文件。