题
当我部署我的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库实例