我有会谈到负载平衡WCF服务(IIS托管在根据帐户配置为的servicePrincipalName正在运行的应用池等)的现有asp.net应用程序。 WCF的服务回报一些自定义错误,所有FaultContract(typeof运算(X)的ProtectionLevel = ProtectionLevel.None)定义 - 这些服务不会暴露给公众。客户端使用所生成的“服务引用”类访问的服务。

这一直很好,但现在,随着最新的代码库,我们正在“初级签名必须被加密。”在客户端上的异常时,服务将返回这些故障之一。服务代码和配置是不变(至少产生故障遗留份)。客户端服务引用生成显示代码的最改变(它常常被移除并重新创建)。

在安全配置是在一年期间不变。所有的更新都相当的电流。我们已经在三种环境中测试这一点,只要我们部署新的代码库,故障开始产生异常。好像它必须是在所产生的类,但它们是由Visual Studio生成所以它是非常复杂的。

这听起来熟悉的人?任何建议?

更新:拆除的ProtectionLevel属性,并允许它默认做“走”的问题,但我很好奇,为什么没有指定导致它失败。也许这与经营合同或者劳务合同而默认级别冲突,但是这些价值观并没有在过去一年改变,因此并不能解释为什么现在什么工作都没有。

更新:对于什么是值得的,这种变化在代码生成2.0.50727.3053和2.0.50727.3082之间发生(根据所产生的代码与运行系统版本注释)

有帮助吗?

解决方案

我还没有遇到这个问题我自己,但我questionn是:为什么在地球上,你指定你的错合同“的ProtectionLevel =无”?对于任何特定的原因是什么?

如果没有,我会强烈建议不要指定在所有 - 默认是的ProtectionLevel = EncryptAndSign而这通常是你最好的选择各地。试试吧,除非你有反对非常强烈和明确的理由。

马克

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top