我们写了一个WCF服务,在IIS上部署。 我们选择了集成Windows身份验证。 服务不能在这种情况下使用,但如果我们可以设置IIS虚拟目录的验证方法为“无名氏”的WCF服务,那么错误就会消失。 但是,“无名氏”是不是我们的WCF服务可以接受的。 我们必须使用集成Windows身份验证来验证客户端。 任何一个知道如何解决这个问题?
提前致谢,
阿希什
我们写了一个WCF服务,在IIS上部署。 我们选择了集成Windows身份验证。 服务不能在这种情况下使用,但如果我们可以设置IIS虚拟目录的验证方法为“无名氏”的WCF服务,那么错误就会消失。 但是,“无名氏”是不是我们的WCF服务可以接受的。 我们必须使用集成Windows身份验证来验证客户端。 任何一个知道如何解决这个问题?
提前致谢,
阿希什
你要做的几件事情:
创建以下绑定配置:
<basicHttpBinding> <binding name="Binding1"> <security mode="TransportCredentialOnly"> <transport clientCredentialType="Windows" /> </security> </binding> </basicHttpBinding>
套用上面的配置为你服务和MEX:
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IService"> </endpoint> <endpoint address="mex" binding="basicHttpBinding" bindingConfiguration="Binding1" contract="IMetadataExchange"> </endpoint>
创建一个客户端和使用的NetworkCredential来传递您的凭据:
ServiceReference.MyClient proxy = new ServiceReference.MyClient(); proxy.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("MACHINENAME\\USERACCOUNT", "passwrd"); proxy.YourServiceOperation();
还有其他的方法来设置用户名和密码indivdually但它并没有在.NET 4.0中工作。 USERACCOUNT是,你的WCF主机加入到域帐户或LDAP。 如果未启用服务器加入到域然后在本地运行“lusrmgr.msc”创建帐户
有迹象表明,你需要注意两两件事:
这可能是给你问题的第二位。 在IIS日志中应包含哪些用户正在通话。