添加服务引用生成两个请求 类
Add service reference generates two request classes
我有一个 WSDL 需要使用,它是从第 3 方交给我的,用于与服务通信。我在 Visual Studio (2015) 中右键单击 "References" 并选择 "Add Service Reference" 并指向 WSDL。添加了服务,但是当我选择 "View in Object Browser" 时,有很多重复的 类 和枚举,例如NameOfClass/NameOfClass1.
还有 Request/Request1 和 Response/Response1。
请求 1 看起来像这样
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
[System.ServiceModel.MessageContractAttribute(IsWrapped=false)]
public partial class PublishAnsattRequest1 {
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://url/ansatt/service/v1_7", Order=0)]
public WcfServiceStatnett.AnsattService.PublishAnsattRequest PublishAnsattRequest;
public PublishAnsattRequest1() {
}
public PublishAnsattRequest1(WcfServiceStatnett.AnsattService.PublishAnsattRequest PublishAnsattRequest) {
this.PublishAnsattRequest = PublishAnsattRequest;
}
}
请求看起来像这样
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.6.1064.2")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://url/ansatt/service/v1_7")]
public partial class PublishAnsattRequest : object, System.ComponentModel.INotifyPropertyChanged {
private BlueMsgHeaderType blueMsgHeaderField;
private AnsattObject ansattField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Namespace="http://url/object/v1", Order=0)]
public BlueMsgHeaderType BlueMsgHeader {
get {
return this.blueMsgHeaderField;
}
set {
this.blueMsgHeaderField = value;
this.RaisePropertyChanged("BlueMsgHeader");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Namespace="http://url/object/v1_7", Order=1)]
public AnsattObject Ansatt {
get {
return this.ansattField;
}
set {
this.ansattField = value;
this.RaisePropertyChanged("Ansatt");
}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName) {
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null)) {
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
第二个请求似乎是正确的,但是接口要我实现Request1。
界面是这样的
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(Namespace="http://url/ansatt/wsdl/v1_7", ConfigurationName="AnsattService.AnsattService")]
public interface AnsattService {
// CODEGEN: Generating message contract since the operation PublishAnsatt is neither RPC nor document wrapped.
[System.ServiceModel.OperationContractAttribute(Action="PublishAnsatt", ReplyAction="*")]
[System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Periode1))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(AuditInfoType1))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Periode))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(AuditInfoType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(PersonObject1))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(SystemKeyPairType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(OrganisasjonsenhetObject))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(KodeverdiDecimalType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(KodeverkObject))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(AnsettelsesforholdType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(PersonObject))]
WcfServiceStatnett.AnsattService.PublishAnsattResponse1 PublishAnsatt(WcfServiceStatnett.AnsattService.PublishAnsattRequest1 request);
}
我在这个问题上尝试了很多谷歌搜索,尝试修改配置选项,但似乎没有任何效果。
有人知道是什么原因导致这个问题吗?
This link 为将来可能 运行 遇到此问题的任何人提供了解决方案!
我遇到了与 Xamarin.Android 相同的问题。
当参数 GenerateMessageContract
为 true
时,此行为会重现。将其设置为 false
为我解决了问题。
如果您已经添加了服务,您可以在 ConnectedService.json
文件中更改此值,然后更新您的服务。
我有一个 WSDL 需要使用,它是从第 3 方交给我的,用于与服务通信。我在 Visual Studio (2015) 中右键单击 "References" 并选择 "Add Service Reference" 并指向 WSDL。添加了服务,但是当我选择 "View in Object Browser" 时,有很多重复的 类 和枚举,例如NameOfClass/NameOfClass1.
还有 Request/Request1 和 Response/Response1。
请求 1 看起来像这样
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
[System.ServiceModel.MessageContractAttribute(IsWrapped=false)]
public partial class PublishAnsattRequest1 {
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://url/ansatt/service/v1_7", Order=0)]
public WcfServiceStatnett.AnsattService.PublishAnsattRequest PublishAnsattRequest;
public PublishAnsattRequest1() {
}
public PublishAnsattRequest1(WcfServiceStatnett.AnsattService.PublishAnsattRequest PublishAnsattRequest) {
this.PublishAnsattRequest = PublishAnsattRequest;
}
}
请求看起来像这样
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.6.1064.2")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://url/ansatt/service/v1_7")]
public partial class PublishAnsattRequest : object, System.ComponentModel.INotifyPropertyChanged {
private BlueMsgHeaderType blueMsgHeaderField;
private AnsattObject ansattField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Namespace="http://url/object/v1", Order=0)]
public BlueMsgHeaderType BlueMsgHeader {
get {
return this.blueMsgHeaderField;
}
set {
this.blueMsgHeaderField = value;
this.RaisePropertyChanged("BlueMsgHeader");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Namespace="http://url/object/v1_7", Order=1)]
public AnsattObject Ansatt {
get {
return this.ansattField;
}
set {
this.ansattField = value;
this.RaisePropertyChanged("Ansatt");
}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName) {
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null)) {
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
第二个请求似乎是正确的,但是接口要我实现Request1。
界面是这样的
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ServiceModel.ServiceContractAttribute(Namespace="http://url/ansatt/wsdl/v1_7", ConfigurationName="AnsattService.AnsattService")]
public interface AnsattService {
// CODEGEN: Generating message contract since the operation PublishAnsatt is neither RPC nor document wrapped.
[System.ServiceModel.OperationContractAttribute(Action="PublishAnsatt", ReplyAction="*")]
[System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Periode1))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(AuditInfoType1))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Periode))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(AuditInfoType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(PersonObject1))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(SystemKeyPairType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(OrganisasjonsenhetObject))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(KodeverdiDecimalType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(KodeverkObject))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(AnsettelsesforholdType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(PersonObject))]
WcfServiceStatnett.AnsattService.PublishAnsattResponse1 PublishAnsatt(WcfServiceStatnett.AnsattService.PublishAnsattRequest1 request);
}
我在这个问题上尝试了很多谷歌搜索,尝试修改配置选项,但似乎没有任何效果。
有人知道是什么原因导致这个问题吗?
This link 为将来可能 运行 遇到此问题的任何人提供了解决方案!
我遇到了与 Xamarin.Android 相同的问题。
当参数 GenerateMessageContract
为 true
时,此行为会重现。将其设置为 false
为我解决了问题。
如果您已经添加了服务,您可以在 ConnectedService.json
文件中更改此值,然后更新您的服务。