C# 如何在WCF服务中公开WSDL对象
我有一个WCF服务,它作为第三方服务的代理 我已经向第三方WSDL端点添加了一个服务引用,现在我的Reference.cs文件中有许多我希望从WCF服务器公开的对象,这些对象可以被对我的服务的请求使用 比如,C# 如何在WCF服务中公开WSDL对象,c#,wcf,wsdl,datacontractserializer,C#,Wcf,Wsdl,Datacontractserializer,我有一个WCF服务,它作为第三方服务的代理 我已经向第三方WSDL端点添加了一个服务引用,现在我的Reference.cs文件中有许多我希望从WCF服务器公开的对象,这些对象可以被对我的服务的请求使用 比如, [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.2046.0")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThr
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.2046.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.opentravel.org/OTA/2003/05")]
public partial class OTA_HotelAvailRQ : object, System.ComponentModel.INotifyPropertyChanged
{
private string echoTokenField;
private System.DateTime timeStampField;
private bool timeStampFieldSpecified;
private bool targetFieldSpecified;
private decimal versionField;
private bool availRatesOnlyField;
private bool availRatesOnlyFieldSpecified;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string EchoToken
{
get
{
return this.echoTokenField;
}
set
{
this.echoTokenField = value;
this.RaisePropertyChanged("EchoToken");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public System.DateTime TimeStamp
{
get
{
return this.timeStampField;
}
set
{
this.timeStampField = value;
this.RaisePropertyChanged("TimeStamp");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool TimeStampSpecified
{
get
{
return this.timeStampFieldSpecified;
}
set
{
this.timeStampFieldSpecified = value;
this.RaisePropertyChanged("TimeStampSpecified");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal Version
{
get
{
return this.versionField;
}
set
{
this.versionField = value;
this.RaisePropertyChanged("Version");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public bool AvailRatesOnly
{
get
{
return this.availRatesOnlyField;
}
set
{
this.availRatesOnlyField = value;
this.RaisePropertyChanged("AvailRatesOnly");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool AvailRatesOnlySpecified
{
get
{
return this.availRatesOnlyFieldSpecified;
}
set
{
this.availRatesOnlyFieldSpecified = value;
this.RaisePropertyChanged("AvailRatesOnlySpecified");
}
}
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));
}
}
}
[System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Xml”,“4.7.2046.0”)]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(“代码”)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true,命名空间=”http://www.opentravel.org/OTA/2003/05")]
公共部分类OTA_HotelAvailerQ:对象,System.ComponentModel.INotifyPropertyChanged
{
私有字符串字段;
private System.DateTime时间戳字段;
指定的专用布尔值;
指定的专用布尔目标域;
私有十进制版本字段;
私人bool可用的最新字段;
仅指定了专用布尔值字段;
[System.Xml.Serialization.XmlAttributeAttribute()]
公共字符串EchoToken
{
得到
{
返回此.echotoken字段;
}
设置
{
this.echoTokenField=值;
此.RaisePropertyChanged(“EchoToken”);
}
}
///
[System.Xml.Serialization.XmlAttributeAttribute()]
public System.DateTime时间戳
{
得到
{
返回此.timestamp字段;
}
设置
{
this.timeStampField=值;
此.RaisePropertyChanged(“时间戳”);
}
}
///
[System.Xml.Serialization.XmlIgnoreAttribute()]
指定公共bool时间戳
{
得到
{
返回指定的这个.timestampfield;
}
设置
{
this.timeStampFieldSpecified=值;
此.RaisePropertyChanged(“指定时间”);
}
}
///
[System.Xml.Serialization.XmlAttributeAttribute()]
公开十进制版本
{
得到
{
返回此.version字段;
}
设置
{
this.versionField=值;
本.RaisePropertyChanged(“版本”);
}
}
///
[System.Xml.Serialization.XmlAttributeAttribute()]
公共图书馆
{
得到
{
返回此.availRatesOnlyField;
}
设置
{
this.availRatesOnlyField=值;
本.RaiseProperty已更改(“可用”);
}
}
///
[System.Xml.Serialization.XmlIgnoreAttribute()]
公共布尔值仅指定
{
得到
{
返回此.availRatesOnlyFieldSpecified;
}
设置
{
this.availRatesOnlyFieldSpecified=值;
此.raiseProperty已更改(“指定可用日期”);
}
}
公共事件System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
受保护的void RaisePropertyChanged(字符串propertyName)
{
System.ComponentModel.PropertyChangedEventHandler propertyChanged=this.propertyChanged;
如果((propertyChanged!=null))
{
propertyChanged(这是新的System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
我得到的例外是
不应为数据协定名称为“”的类型“”。考虑使用DATACONTRORTCORDEVER或将未知类型的任何类型添加到已知类型的列表中——例如,使用NoNyType属性或将它们添加到传递给DATACONTROTTRORIGLASER的已知类型列表中。
我设法公开这些对象的唯一方法是用[DataContract]装饰它们,用[DataMember]装饰属性
然而,我的问题是,我的reference.cs包含很多对象,我宁愿找到一种自动化的方法来完成它
有什么建议吗?那么您的服务是作为代理吗?是的,本质上我的服务是从第三方服务请求数据,我想公开这些对象