2012-03-16 92 views
3

我看到这里到处这个问很多次,但我不能左右我的头的IIS应用程序启用它。WCF异常:...这个服务需要“匿名”身份验证,但它没有为承载此服务

这是我想要做的。我需要在IIS 6中托管WCF服务。我希望用户名/密码安全,并且我不希望这些传递未加密,所以我使用的是HTTPS。我在我的IIS上本地工作,但是当我部署它时,我得到匿名访问未启用错误。在我的本地IIS上启用了匿名访问,在部署的服务器上它不是,我们不想启用它。问题理解。解决方法不是明显对我....

如果我浏览网页的IE,还是从Visual Studio中添加服务引用,我得输入我的用户名/密码后,这个错误。所以这表明我的证书和HTTPS工作正常,并且用户名和密码是正确的。下面是web.config中的相关设置:

<services> 
    <service name="SecureWcfTestsApplication.Service1"> 
    <endpoint address="" 
     binding="wsHttpBinding" 
     bindingConfiguration ="Binding2" 
     contract="SecureWcfTestsApplication.IService1" /> 
    </service> 
</services> 

<bindings> 
    <basicHttpBinding> 
    </basicHttpBinding> 
    <wsHttpBinding> 
    <binding name="Binding2"> 
     <security mode="TransportWithMessageCredential"> 
     <message clientCredentialType="Windows" algorithmSuite="Default" /> 
     </security> 
    </binding>   
    </wsHttpBinding> 
</bindings> 

我使用的wsHttpBinding,因为它不喜欢与clientCredentialType设置为Windows basicHttpBinding的。话虽如此,我宁愿使用basicHttp,但它希望UserName作为clientCredentialType,我不确定UserName和Windows安全性之间有什么不同。

最佳

回答

1

你唯一的例外是正常的,如果你不使用Windows身份验证配置传输的安全性,需要在这种情况下http://msdn.microsoft.com/en-us/library/ms733089.aspx

<transport>标签,尽管你已经有了<message>标签已定义。

+0

嗨 - 我加了这一点,仍然得到同样的错误 - 我现在有这样的: <的wsHttpBinding > <绑定名称= “Binding2”> <安全模式= “TransportWithMessageCredential”> <消息clientCredentialType = “视窗” algorithmSuite = “默认”/> <传输clientCredentialType = “视窗”/> – RBrowning99 2012-03-20 17:13:08

+0

在任何情况下e后来发现这是我发现的最简单的方法。 <服务名称= “SecureWcfTestsApplication.Service1”> <端点地址= “” 结合= “basicHttpBinding的” bindingConfiguration = “Binding2” 合同= “SecureWcfTestsApplication.IService1”/> <绑定名称= “Binding2”> <安全模式= “运输”> <传输clientCredentialType = “视窗”/> RBrowning99 2012-03-21 03:51:00

0

匿名身份验证就可以了,在某些情况下,必须为服务启用,但不是网站。

因此,检查您的网站的“根”认证只有启用了Windows身份验证。然后展开您的网站,选择'服务'文件夹,并确保您的服务启用了Windows和匿名身份验证。

至少我有相同的错误消息基本MSSQL主数据服务网站&服务,这是解决方案。我在运行服务时确实遇到了错误,但网站几乎可以正常工作,MDS Explorer无法工作,因为服务的身份验证设置起初是错误的。创建新的MDS站点时,这种未命中配置的原因可能是MDS配置管理器中的一个错误?

所以在我的情况下,这个问题不是通过对web.config和ApplicationHost.config文件进行任何特殊编辑来解决的,而只是为网站选择正确的身份验证设置,并且它是IIS管理器中的服务。我不确定这是否属于这种情况,但可能值得尝试?

0

在一个特别愚蠢的时刻,我也收到此错误:

WCF异常:......这个服务需要“匿名”身份验证,但它没有为承载此服务的IIS应用程序启用

我终于意识到我的web.config在“system.web”中根本没有“认证”标签。难怪IIS正在抱怨认证问题!

解决的问题是一样简单增加:

<system.web> 
    <authentication mode="Windows" /> 

愚蠢,我知道......但我希望这有助于!

1

在IIS管理器中单击您的网站。您需要在“功能视图”中(而不是“内容视图”)

在“功能视图”的IIS部分选择所谓的功能“身份验证”,然后单击它。在这里您可以启用Windows身份验证。这也是可能的(我认为在线程中的一个建议)通过web.config中的设置(...)

但也许你有一个web.config你不想过分与...一起。然后,这个线程不会是太大的帮助,这就是为什么我添加了这个答案