从数据协定创建 soap 消息
create soap message from Data Contract
我有一个 WCF 服务,我使用 C# 使用它。基本上我添加服务引用并通过它使用服务操作。
此服务正在使用 basicHttpBinding 公开。我也想允许 soapBinding 并向我的客户提供一些肥皂样品。
是否可以从 DataContract 类中获取 soap xml?我的意思是,我想以某种方式使用我现有的代码获得 xml。
[DataContract]
public class Foo
{
[DataMember]
public int Id {get;set;}
[DataMember]
public string Name {get;set;}
}
[ServiceContract]
public interface IService
{
[OperationContract]
bool Import(IEnumerable<Foo> foos);
}
c#客户端:
var client = new ws.ServiceClient();
var foo = new Foo{
Id = 1,
Name = "Test"
};
client.Import(new[] { foo });
以防我不够清楚,我想得到 soap xml 重用上面的代码。
如果您只是想要一个简单的文档请求或其他内容,您可以使用 WCF 跟踪。
适用于您所有服务的简单通用解决方案。
在你的system.serviceModel
<system.serviceModel>
...
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="3000" />
</diagnostics>
....
</system.serviceModel>
并添加 system.diagnostics 元素
<system.diagnostics>
<switches>
<add name="XmlSerialization.Compilation" value="4"/>
</switches>
<sources>
<source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\temp\WCFLoging.svclog" />
</sharedListeners>
</system.diagnostics>
然后在 (c:\temp\WCFLoging.svclog) 的服务调用检查服务日志后,将有一个简单的请求。
或者如果您想在客户端代码中获取它。
使用 WCF 消息检查器。示例使用 http://www.primaryobjects.com/CMS/Article121
我有一个 WCF 服务,我使用 C# 使用它。基本上我添加服务引用并通过它使用服务操作。
此服务正在使用 basicHttpBinding 公开。我也想允许 soapBinding 并向我的客户提供一些肥皂样品。
是否可以从 DataContract 类中获取 soap xml?我的意思是,我想以某种方式使用我现有的代码获得 xml。
[DataContract]
public class Foo
{
[DataMember]
public int Id {get;set;}
[DataMember]
public string Name {get;set;}
}
[ServiceContract]
public interface IService
{
[OperationContract]
bool Import(IEnumerable<Foo> foos);
}
c#客户端:
var client = new ws.ServiceClient();
var foo = new Foo{
Id = 1,
Name = "Test"
};
client.Import(new[] { foo });
以防我不够清楚,我想得到 soap xml 重用上面的代码。
如果您只是想要一个简单的文档请求或其他内容,您可以使用 WCF 跟踪。
适用于您所有服务的简单通用解决方案。
在你的system.serviceModel
<system.serviceModel>
...
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="3000" />
</diagnostics>
....
</system.serviceModel>
并添加 system.diagnostics 元素
<system.diagnostics>
<switches>
<add name="XmlSerialization.Compilation" value="4"/>
</switches>
<sources>
<source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\temp\WCFLoging.svclog" />
</sharedListeners>
</system.diagnostics>
然后在 (c:\temp\WCFLoging.svclog) 的服务调用检查服务日志后,将有一个简单的请求。
或者如果您想在客户端代码中获取它。 使用 WCF 消息检查器。示例使用 http://www.primaryobjects.com/CMS/Article121