1
我正在向Peoplesoft WSDL添加服務引用。現有應用程序具有在不同版本的.NET(我認爲是4.0)或svcutil中生成的代理。舊的代理開始是這樣的:爲什麼WCF生成不同的代理?
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.235
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace PeopleSoft.CustomerService {
using System.Runtime.Serialization;
using System;
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.CollectionDataContractAttribute(Name="CIFaultTypeShape", Namespace="http://xmlns.oracle.com/Enterprise/FSCM/schema/M866879.V1", ItemName="IBResponse")]
[System.SerializableAttribute()]
但新的代理看起來是這樣的:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.239
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Tasks.Services.ServiceReference1 {
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://xmlns.oracle.com/Enterprise/FSCM/schema/M866879.V1")]
顯然同一個WSDL是導致不同的代理類。我們擁有依賴於FaultType(CIFaultTypeShape
)的舊代碼,該代碼不會生成代理類。
這是一個WCF問題,導致該FaultType被忽略?
是否可以使用svcutil.exe生成第一個代理,使用Visual Studio中的Add Service Reference生成第二個代理?問題可能在於使用不同的序列化程序(Xml vs DataContract)。 – CodeCaster 2012-03-01 01:17:23
謝謝,但我們將其追溯到VS 2010的錯誤。 – 2012-03-01 23:38:09