要访问Web服务,我使用Visual Studio添加服务引用"创建了一个代理类.不幸的是,我必须在肥皂标题中添加以下元素
to access a web service i created a proxy class using visual studio "add service reference". Unfortunatly i have to put in the soap header the followings elements
<soapenv:Header> <ser:CF>XXXXXXXXXX</ser:CFSender> <ser:Identity xmlns="company" xmlns:i="www.w3/2001/XMLSchema-instance"> <ser:AppKey>XXX</ser:AppKey> <ser:AppName>XXXX</ser:AppName> <ser:Parameter>Y</ser:Parameter> </ser:Identity> </soapenv:Header>Visual Studio生成的代理仅将以下元素作为方法参数
The proxy generated by visual studio has only che following element as method parameter
<ser:CF>XXXXXXXXXX</ser:CFSender>但不是身份.我需要以编程方式在Web服务调用之前放置"Identity"元素....我需要最简单的解决方案.我在其他问题中看到了如何放置一个参数...但是身份是一个嵌套对象,我不知道该怎么办. 有人可以帮忙吗?
but not the identity. I need to put "Identity" element just before the web service invocation programmatically.... i need the simplest solution. I saw in other questions how to put one parameter...but identity is a nested object and i don't know what to do. Anyone can help?
推荐答案以下是解决方案,来自 blogs.msdn/b/wsdevsol/archive/2014/02/07/添加自定义消息标题和-http-header-to-a-wcf-method-call.aspx (使用Identity obj代替userInfo)
Here is the solution, from blogs.msdn/b/wsdevsol/archive/2014/02/07/adding-custom-messageheader-and-http-header-to-a-wcf-method-call.aspx (use Identity obj instead of 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", "tempuri", userInfo); OperationContext.Current.OutgoingMessageHeaders.Add(aMessageHeader);更多推荐
C#Web Service客户端:如何向请求添加自定义标头?
发布评论