我编写了一个非常简单的WCF服务来发送和接收消息.我已经通过VS 2008默认Web服务器主机测试了应用程序,一切正常.但是,当我将WCF服务部署到另一台计算机的IIS时,我收到以下错误:
"由于身份验证失败,无法满足安全令牌的请求."
如何设置身份验证类型以在配置文件中使用我的自定义用户名和密码?如果不可能,请告诉我如何设置其Windows凭据,因为我正在使用的2台计算机不共享相同的用户.
您需要关闭绑定的安全性.否则,我相信,默认情况下,wsHttpBinding将尝试协商安全上下文令牌(SCT).
因此,修改端点定义以指向绑定配置部分.这是一个例子:
然后
在web.config的
部分中添加类似以下绑定配置的内容.
将安全性设置为"无"是关键.
希望这有帮助!
上面对我有所帮助 - 但是不明显的是如何添加到服务端(一旦你完成了它需要的东西就清楚了,但直到你这样做).其不完全明显的原因是因为默认情况下没有绑定部分,而客户端中可能存在绑定部分.
所以,只是要非常清楚 - 在服务端,添加绑定部分(如上所述),然后添加到bindingSfiguration ="TheBindingConfig"属性的相应端点.一旦你做过一次就明显了......
您实际上不需要关闭安全性,在某些情况下您不应该.在bindingConfiguration中,您可以指定不建立安全上下文的消息级安全性,如下所示:
请注意establishSecurityContext属性.客户端和服务都应该具有安全配置,并将establishSecurityContext设置为相同的值.值true也可以正常工作,但建议在服务器负载平衡的环境中使用false.
一定要设置这个bindingConfiguration
上(指定安全模式"无"),这两个客户端和服务器,否则你会得到这样的信息-这是一个相当红鲱鱼至于调试问题.
邮件无法处理.这很可能是因为" http://tempuri.org/IInterfaceName/OperationName "操作不正确,或者因为邮件包含无效或过期的安全上下文令牌,或者因为绑定之间存在不匹配.如果服务由于不活动而中止了通道,则安全上下文令牌将无效.要防止服务中止空闲会话,请过早增加服务端点绑定的接收超时.