<global namespace =“”>包含多个代码生成文件中__的定义</global>

时间:2013-08-26 14:01:27

标签: wcf web-services wsdl global-namespace

我无法理解如何纠正这个问题。大约一个星期前,它出现了,我不知道我做出的改变可能导致了什么。我们使用SVN并且我回滚了我对这些错误的可能罪魁祸首所做的更改,但是当我构建我的asp.net webforms项目时,我仍然遇到以下错误:

The namespace <global namespace> already contains a definition for 'TrxStatus'
The namespace <global namespace> already contains a definition for 'MessageStatusType'

这两个错误重复5次(总共10个错误),源文件是为我们项目中的Web服务负载生成的代码。

文件名是App_Code.34kjg234jh1.cs(组成,但你明白了),并在每个文件的顶部告诉我它是从哪里生成的:

App_Code\App_WebReferences\SomeService\SomeWebService.wsdl

如果我进入.wsdl定义,我相信他们都基于这一行生活在同一名称空间中:(注意,我不是.wsdl wiz,所以告诉我,如果我我错了)

<s:schema elementFormDefault="qualified" targetNamespace="http://www.thirdpartysite.com/Soa/Foundation/">
<s:import namespace="http://www.thirdpartysite.com/Soa/Foundation/MessageDefinition.xsd" />

这是一个继承自我们之前的开发人员的应用程序(它是一个开发商店,所以我通常会在黑暗中探讨)所以我不知道为什么我们有大约7 不同的应用程序中的Web服务,全部使用该命名空间定义,ALL包含违规的“TrxStatus”和“MessageStatusType”。

我不想更改命名空间,因为它是正确的命名空间(我相信),但我也需要这个冲突才能消失。我不确定要走哪条路。

我试图进入其中一个.wsdl文件并将TrxStatus更改为TrxStatus_Whatever,但这给了我这个错误:

Unable to import binding 'MyWebServiceName' from namespace http://www.thirdpartysite.com/SOA/Foundation

另一个可能的线索是,我收到来自各种网络服务的大量警告:

The 'http://www.thirdpartysite.com/Soa/Foundation/MessageDefinition.xsd:SomeElementName' element is not declared. 

有关可能的解决方案的任何建议吗?根本原因是什么?请不要告诉我,我需要重新编写所有这些服务....

1 个答案:

答案 0 :(得分:0)

我绝对不是专家,事实上我做的很少有ASP.NET&amp;服务。

BUT。听起来似乎存在冲突的导入(即使用),这些导入具有相同名称的类型。

proj1:A.SomeType proj2:A.SomeType

您可以添加对这两个项目的引用,它可以正常播放(我相信)。但是当您导入两个名称空间时会遇到困难,因为类型名称会发生​​冲突。

您可以使用global :: accessor。

访问正确的类型

你甚至可以在using语句中使用global ::。

using A = global::[path to correct project and type here]

不确定它对你有多大用处,但有关global :: here的更多信息:

http://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx