我在IIS中使用WebServiceHostFactory时遇到问题.
"IIS指定了身份验证方案'IntegratedWindowsAuthentication,Anonymous',但绑定仅支持一种身份验证方案的规范.有效的身份验证方案是摘要,协商,NTLM,基本或匿名.更改IIS设置,以便只有一个身份验证方案是用过的."
我想保留两种身份验证方案,并通过不使用工厂但在web.config中手动设置端点来实现这一目的.
我的问题是WebServiceHostFactory做什么来获得这个结果?我的印象是WebServiceHostFactory会将绑定设置为我在配置中使用的webHttpBinding.
编辑:我在反射器中查看了WebServiceHostFactory,它没有做任何聪明的事情.它只是WebServiceHost的一个简单工厂.
如果在config中设置端点,IIS是否仍使用服务主机?或者WebServiceHost的设置有所不同.
小智 3
这对我有用。尽早添加一个虚拟端点(在服务主机打开之前),如下所示似乎已经成功了。(这篇 MSDN 文章暗示了这个http://msdn.microsoft.com/en-us/library/bb412178.aspx。)
public class MyWebServiceHost : WebServiceHost
{
public MyWebServiceHost (Type serviceType, params Uri[] baseAddresses) : base(serviceType, baseAddresses)
{
// Inserting this dummy endpoint config seemingly does the trick:
AddServiceEndpoint(typeof(IMyContract), new WebHttpBinding(), string.Empty);
}
protected override void ApplyConfiguration()
{
// Typical programmatic configuration here per:
// http://msdn.microsoft.com/en-us/library/aa395224.aspx
}
}
Run Code Online (Sandbox Code Playgroud)
我猜这会阻止 WebServiceHost 创建默认端点,从而关闭一系列功能。
| 归档时间: |
|
| 查看次数: |
11992 次 |
| 最近记录: |