当我部署我的WCF数据服务到生产托管,我开始得到以下错误(或类似的,这取决于身份验证方案是主动):

  

IIS指定的认证方案   “基本,无名氏”,但结合   仅支持确切规格   一个认证方案。有效   认证方案是文摘,   协商,NTLM,基本或匿名。   更改IIS设置,仅允许一   单一认证方案被使用。

显然WCF数据服务(在一般WCF?)不能处理具有多于一次的认证方案活性。

行,所以我知道我可以禁用所有 - 丁一个认证经由IIS控制面板上的Web应用程序方案....经由支撑请求!!

<强>是否有在每个服务级别在web.config指定单个认证方案的方式吗

我想这可能是直线前进的作出改变,以<system.serviceModel>但是......事实证明, WCF数据服务并不在网络本身配置配置 。如果你看一下DataService<>类不实行[ServiceContract]因此你不能引用它在<service><endpoint> ...这我相信将需要通过XML改变其结构。

P.S。我们的主机使用II6,但对于IIS6&IIS7这两种解决方案的赞赏。

有帮助吗?

解决方案

首先,它能够configurate上的web配置文件数据服务。由DataService使用的合同被称为System.Data.Services.IRequestHandler。

下面是您可以在Web配置文件做configurate它是什么。

在所述system.servicemodel元件的服务标签添加

<service name="{you service type name including the namespace i.e. myapplication.myservice}">
    <endpoint address="" binding="webHttpBinding" contract="System.Data.Services.IRequestHandler">
    </endpoint>
</service>

一旦你有,你就可以开始使用标准WCF配置元素配置的东西都礼貌。

其次,以启用或在IIS特定服务可以执行以下禁用认证方法:

在在IIS右键点击你的服务文件的快照(即yourservice.svc),然后单击属性。 一旦在性能转到文件安全选项卡,并选择在身份验证和访问控制组框中的编辑按钮。之后,它就像在IIS设置目录的安全性。

作为最后建议按任何故障排除去,而你configurate使用它的XML配置,被写在WCF使WCF disgnostics重要的是,数据服务记录是按WCF丰富,内容非常丰富。

您可以找到更多有关在 WCF的管理和诊断

我希望我能够帮助你解决问题。

让我知道事情如何去。

此致

丹尼尔Portella

更新:

施耐德您好

要指定认证方案中的XML低于读

有关Windows验证作为示例

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="MyBindingName" >
          <security mode="Transport">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <services>
      <service name="{you service type name including the namespace i.e. myapplication.myservice}">
        <endpoint address="" binding="webHttpBinding" bindingConfiguration="MyBindingName" contract="System.Data.Services.IRequestHandler">
        </endpoint>
      </service>
    </services>
  </system.serviceModel>
</configuration>

有关其他类型的认证请检查MSDN库实例

安全常见方案

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top