为了给您一些背景知识,我一直在尝试修改我们的本地托管安排,以便现有的 WCF 服务托管在本地的 IIS 中,而不是当前的主机控制台应用程序。
我创建了一个新的 WCF 项目,它只包含一个 svc 和 web.config。
svc 在服务程序集中引用了一个服务工厂,而 web.config 处于复杂性的低端。这模仿了服务在我们的 dev/test/uat/pre-prod 环境中的部署方式。
该服务具有在调用 AddBindingParameters 期间设置证书验证器的服务行为 - 这比我在公司工作的时间更长。
问题出在本地,AddBindingParameters 被多次调用,但最终通道状态设置为“打开”,服务凭证对象设置为只读,蘑菇云。
我认为这可能是环境问题,但我已经搜索了 IIS 以寻找“设置为邪恶”标志,但没有运气。我尝试将服务(文件副本)部署到已知良好的服务器 - 不好,同样的问题。环境,我说。所以我尝试在本地复制一个已知的好服务(文件复制) - 不好。好吧,WTF。检查安装程序(该服务是使用 WiX 安装程序安装的)——它确实创建了虚拟目录,但没有什么特别突出的。
我知道我可以将授权逻辑移动到授权策略中,但我不愿意在不了解根本问题的情况下更改已经工作了这么长时间的东西。
在这一点上,除非我得到一些好主意,否则我已经准备好放弃了!