【问题标题】:WCF FaultException naming conflictWCF FaultException 命名冲突
【发布时间】:2013-04-05 02:57:50
【问题描述】:

我有 2 个 WCF 服务(不同的项目)共享一个定义了 MyExceptions 的类库。

两种服务都使用:

[OperationContract]
[FaultContract(typeof(MyException))]
void op();

当我在客户端项目中添加两个引用时,我得到:

Type namespace.MyException 已经定义了一个名为 MyException 的成员 具有相同的参数类型。

基本上,这些类具有相同的名称,因此构造函数被定义了两次。 关于如何更改 Exception 命名空间的任何想法?

请注意:

  • 我正在使用 svcutils
  • 命名空间选项不起作用。

谢谢

【问题讨论】:

  • 我在这里有点困惑。你是什​​么意思“命名空间选项不起作用”?您是否尝试过使用[FaultContract(typeof(some.namespace.MyException))]? (我假设MyException 的两个版本有不同的命名空间..?)
  • 如果我使用 svcutil /namespace:*,MyNs myUrl 我收到错误:无法导入 wsdl:binding 详细信息:导入 wsdl:binding 所依赖的 wsdl:portType 时出错。

标签: c# wcf svcutil.exe


【解决方案1】:

使用svcutil /reference:SharedLibrary.dll 创建代理。这样svcutil 就不会生成它在SharedLibrary.dll 中找到的类,因此客户端使用程序集中的类定义。

如果您还没有这样做,请不要忘记在客户端项目中添加对 DLL 的引用。

【讨论】:

  • 谢谢,我会试一试,会告诉你的
【解决方案2】:

除了命名空间建议之外,还可以编辑 SVCUTIL 生成的代理代码并删除 MyException 类的重复代码。

步骤: 1.为Service1创建一个代理文件。 2.为Service2创建一个代理文件。 3. 将代理添加到客户端。 4. 编译,它给出了 MyException 已经被声明的错误。 5. 编辑任一代理并删除 MyException 类代码。

【讨论】:

  • 这就是我现在正在做的事情。感谢您的回答。
猜你喜欢
  • 2019-04-13
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
相关资源
最近更新 更多