WebServiceHostFactory和IIS身份验证

Gra*_*ose 11 wcf

我在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 创建默认端点,从而关闭一系列功能。