c# web 服务客户端:如何将自定义 header 添加到请求中?
c# web service client: how to add custom header to request?
为了访问 Web 服务,我使用 visual studio "add service reference" 创建了一个代理 class。不幸的是,我必须在肥皂 header 中加入以下元素
<soapenv:Header>
<ser:CF>XXXXXXXXXX</ser:CFSender>
<ser:Identity xmlns="http://company.org" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ser:AppKey>XXX</ser:AppKey>
<ser:AppName>XXXX</ser:AppName>
<ser:Parameter>Y</ser:Parameter>
</ser:Identity>
</soapenv:Header>
visual studio生成的代理只有一个元素作为方法参数
<ser:CF>XXXXXXXXXX</ser:CFSender>
但不是身份。我需要以编程方式将 "Identity" 元素放在 Web 服务调用之前……我需要最简单的解决方案。我在其他问题中看到如何放置一个参数...但是身份是嵌套的 object,我不知道该怎么做。
有人可以帮忙吗?
这是解决方案,来自 http://blogs.msdn.com/b/wsdevsol/archive/2014/02/07/adding-custom-messageheader-and-http-header-to-a-wcf-method-call.aspx(使用 Identity obj 而不是 userInfo)
using(new OperationContextScope(client.InnerChannel)) {
// We will use a custom class called UserInfo to be passed in as a MessageHeader
UserInfo userInfo = new UserInfo();
userInfo.FirstName = "John";
userInfo.LastName = "Doe";
userInfo.Age = 30;
// Add a SOAP Header to an outgoing request
MessageHeader aMessageHeader = MessageHeader.CreateHeader("UserInfo", "http://tempuri.org", userInfo);
OperationContext.Current.OutgoingMessageHeaders.Add(aMessageHeader);
为了访问 Web 服务,我使用 visual studio "add service reference" 创建了一个代理 class。不幸的是,我必须在肥皂 header 中加入以下元素
<soapenv:Header>
<ser:CF>XXXXXXXXXX</ser:CFSender>
<ser:Identity xmlns="http://company.org" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ser:AppKey>XXX</ser:AppKey>
<ser:AppName>XXXX</ser:AppName>
<ser:Parameter>Y</ser:Parameter>
</ser:Identity>
</soapenv:Header>
visual studio生成的代理只有一个元素作为方法参数
<ser:CF>XXXXXXXXXX</ser:CFSender>
但不是身份。我需要以编程方式将 "Identity" 元素放在 Web 服务调用之前……我需要最简单的解决方案。我在其他问题中看到如何放置一个参数...但是身份是嵌套的 object,我不知道该怎么做。 有人可以帮忙吗?
这是解决方案,来自 http://blogs.msdn.com/b/wsdevsol/archive/2014/02/07/adding-custom-messageheader-and-http-header-to-a-wcf-method-call.aspx(使用 Identity obj 而不是 userInfo)
using(new OperationContextScope(client.InnerChannel)) {
// We will use a custom class called UserInfo to be passed in as a MessageHeader
UserInfo userInfo = new UserInfo();
userInfo.FirstName = "John";
userInfo.LastName = "Doe";
userInfo.Age = 30;
// Add a SOAP Header to an outgoing request
MessageHeader aMessageHeader = MessageHeader.CreateHeader("UserInfo", "http://tempuri.org", userInfo);
OperationContext.Current.OutgoingMessageHeaders.Add(aMessageHeader);