我在Shared.DataContracts DLL後續類返回一個包含WCF服務列表成員的對象
[DataContract]
public class TestClass
{
[DataMember]
public int Group { get; set; }
[DataMember]
public List<TestClassTwo> Member { get; set; }
}
[DataContract]
public class TestClassTwo
{
[DataMember]
public long MessageId { get; set; }
[DataMember]
public RequestOpType ResultType { get; set; }
}
[DataContract(Name = "RequestOperationType")]
public enum RequestOpType
{
[EnumMember]
Add,
[EnumMember]
Delete,
[EnumMember]
Update,
[EnumMember]
Retrieve,
[EnumMember]
Search
}
我的服務合同如下:
[ServiceContract]
public interface IConnectorService
{
[OperationContract]
void PustRequestToWorkBuffer(TestClass test);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class ConnectorService : IConnectorService
{
public void PustRequestToWorkBuffer(TestClass test)
{
return;
}
}
當我嘗試將以下內容作爲服務引用添加到我的項目之一我總是收到WSDL引發的錯誤。該項目有一個對Shared.DataContracts DLL的引用。因此,我通過在'引用程序集中重複使用類型'複選框打勾來添加服務引用。如果我從TestClass中刪除List<TestClassTwo>
,並只用TestClassTwo
成員,它工作正常更換
Warning 68 Custom tool warning: Cannot import wsdl:portType Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter Error: Referenced type 'Poc.Shared.DataContract.TestClass, Poc.Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' with data contract name 'TestClass' in namespace ' http://schemas.datacontract.org/2004/07/Poc.Shared.DataContract ' cannot be used since it does not match imported DataContract. Need to exclude this type from referenced types. XPath to Error Source: //wsdl:definitions[@targetNamespace=' http://tempuri.org/ ']/wsdl:portType[@name='IConnectorService'] S:\src\source\MetaConnector\Service References\ServiceReference1\Reference.svcmap 1 1 MetaConnector
:
我得到這個錯誤:
Error 73 Custom tool error: Failed to generate code for the service reference 'ServiceReference1'. Please check other error and warning messages for details. S:\src\test\source\test\Connector\Service References\ServiceReference1\Reference.svcmap 1 1 MetaConnector
的警告。看起來像列表是我的問題的原因。
我需要重新使用共享程序集中的類型,因此取消選中此選項不適用(即使會刪除該錯誤)。
編輯:我認爲視覺工作室的「添加服務參考」功能是基於閱讀周圍有點片狀。由於我控制了客戶端和服務器,我重新考慮了我的代碼以分享合同並使用ChannelFactory
代替。 儘管我確實在一個單獨的解決方案中使用了相同的合同,但一切似乎都沒有問題。我有一種感覺,客戶端和服務器解決方案有一些問題,他們正在尋找Shared.DataContracts.DLL的不同版本。
我測試過它在我的電腦上工作正常。列表中沒有問題 –
您是使用Visual Studio還是svcutil? –
是的,我正在使用VS –