【发布时间】:2013-07-20 15:18:22
【问题描述】:
我正在开发WCF 服务。 WCF 服务接口和实现位于不同的项目中。还有一个 Windows 服务项目来托管 WCF 服务。
WCF 服务实现需要做的一件事是调用多个外部 (SOAP) Web 服务。我们通常构造它的方式是为 SOAP 服务创建一个单独的类库项目;我们将在类库中创建一个 Web 引用和一个工厂/辅助方法。
上述细节可能与实际问题相关,也可能不相关。这是我在构建 WCF 服务实现项目(其中 X 是 SOAP 服务包装程序集之一)时遇到错误:
引用的程序集“X”没有强名称
但 WCF 服务实现项目未设置为签名(接口项目也未设置)。在这一点上,唯一引用它的两件事是 Windows 服务项目和一个单元测试项目——而且两者都没有签名。
WCF 实现还引用了其他(预先存在的)Web 服务包装器项目,但它只是抱怨这两个项目。我在文本编辑器中并排提取了一个现有项目文件和一个新项目文件......而且我可以看到任何显着差异。
我还检查了是否有任何项目正在导入需要对其进行签名的设置,如 Stack Overflow 问题 Remove signing from an assembly 中所述。好像不是这样的。
我试图在我的 WCF 实现中使用 AutoMapper——1.1,因为我们仍在使用 .NET 3.5。那是一个签名的程序集,所以我可以看到它可能在我的代码和 SOAP 服务包装器上存在问题。但在我看来,这将是一个运行时问题,而不是构建时间。但是因为我怀疑它可能至少是一个促成因素,所以我删除了 AutoMapper 和依赖代码,但我仍然得到同样的错误。
我已经研究过这个问题,大部分搜索结果都包含有关如何签署(可能是第三方)程序集的说明。
我已尝试删除并重新添加引用,重新启动 Visual Studio 和我的电脑。
Visual Studio 2010 / .NET 3.5 在 Windows 7 64 位上。
我确定我遗漏了一些相当明显的东西......我就是不知道是什么。
【问题讨论】:
-
您需要发布运行 Fuslogvw.exe 失败绑定的跟踪信息。
-
你能澄清一下它什么时候抱怨这两个网络服务没有被强签名吗?编译 WCF 时?或者在编译网络服务时?或者正在拨打电话时?
-
@Basic - 编译 WCF 服务实现项目(它引用 SOAP Web 服务包装器)时。
-
@Hans = 感谢您的回复,我不知道 fuslogvw。但是我的是构建时而不是运行时问题。
-
这增加了找到错误程序集的几率。你仍然使用 Fuslogvw。你真的需要跑腿才能得到答案,我们远程调试是行不通的。
标签: c# .net visual-studio-2010 strongname