如何禁用WCF数据服务的身份验证方案

如何禁用WCF数据服务的身份验证方案,wcf,wcf-data-services,Wcf,Wcf Data Services,当我将WCF数据服务部署到生产主机时,我开始出现以下错误(或类似错误,具体取决于哪个身份验证方案处于活动状态): IIS指定的身份验证方案 “基本,匿名”,但绑定 仅支持精确的 一个身份验证方案。有效的 认证方案是摘要, 协商、NTLM、基本或匿名。 更改IIS设置,以便只有 使用单一身份验证方案 显然,WCF数据服务(通常是WCF?)无法处理多次激活的身份验证方案 好的,我知道我可以通过IIS控制面板在web应用程序上禁用除一个之外的所有身份验证方案。。。。通过支持请求 是否有办法在web.c

当我将WCF数据服务部署到生产主机时,我开始出现以下错误(或类似错误,具体取决于哪个身份验证方案处于活动状态):

IIS指定的身份验证方案 “基本,匿名”,但绑定 仅支持精确的 一个身份验证方案。有效的 认证方案是摘要, 协商、NTLM、基本或匿名。 更改IIS设置,以便只有 使用单一身份验证方案

显然,WCF数据服务(通常是WCF?)无法处理多次激活的身份验证方案

好的,我知道我可以通过IIS控制面板在web应用程序上禁用除一个之外的所有身份验证方案。。。。通过支持请求

是否有办法在web.config中的每个服务级别上指定单个身份验证方案?

我认为这可能和对
进行更改一样简单,但是。。。事实证明,WCF数据服务不会在web配置中配置自己。如果您查看
数据服务
类,它没有实现
[ServiceContract]
,因此您不能在
中引用它,我认为这是通过XML更改其配置所必需的


另外,我们的主机正在使用II6,但IIS6和IIS7的两种解决方案都值得赞赏。

首先,可以在web配置文件上配置数据服务。数据服务使用的契约称为System.Data.Services.IRequestHandler

以下是您可以在web配置文件中执行的配置操作

在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中设置目录安全一样

最后一个建议是,在使用xml配置(用wcf编写)进行配置时,启用wcf诊断功能非常重要,因为wcf内容丰富,信息量大

你可以在网上找到更多关于这个的信息

我希望我能帮助你解决你的问题

让我知道事情的进展

问候

丹尼尔·波特拉

更新:

嗨,施耐德

要在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库中的示例


谢谢。端点配置很有用。现在我已经知道了,我将寻找一种在xml中指定身份验证方案的方法…在上面添加一个更新,希望ti解释如何为服务设置身份验证如果可以的话,我会给你赏金。。!非常感谢你!thx Rashack刚刚投票表决的答案足够好,以确保其他人能够看到它的帮助,并给社区带来解决问题的信心