Webservice返回SoapHeader
Webservice在请求中加入自定义的SoapHeader,比较常用的场景是在SoapHeader中携带用户登陆信息,由服务端进行身份验证。今天遇到一个需求,除了在请求时要携带SoapHeader外,在返回值中也要返回一个结构不同的SoapHeader对象。简单点,在参数中增加ref outHeader,也可以实现需求。但是客户的WebService接口并不是这样设计的。于是找到下面的处理方法:
定义两个SoapHeader类:
public class InSoapHeader : SoapHeader
{ public InSoapHeader()
{ } public string UserName { get; set; } public string Ip { get; set; } public string Token { get; set; }
} public class OutSoapHeader : SoapHeader
{ public OutSoapHeader()
{ } public string Ip { get; set; }
}
编写WebService服务:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class WebService1 : System.Web.Services.WebService
{
private InSoapHeader _inSoapHeader; public InSoapHeader InSoapHeader
{
get { return _inSoapHeader; }
set { _inSoapHeader = value; }
} private OutSoapHeader _outSoapHeader=new OutSoapHeader();//给定初始值,否则在返回时会null public OutSoapHeader OutSoapHeader
{
get { return _outSoapHeader; }
set { _outSoapHeader = value; }
} [WebMethod]
[SoapHeader("InSoapHeader", Direction = SoapHeaderDirection.In)]
[SoapHeader("OutSoapHeader", Direction = SoapHeaderDirection.Out)]
public string HelloWorld()
{
OutSoapHeader.Ip = "";
return string.Empty;
}
}
客户端调用程序:
private void btnCall_Click(object sender, EventArgs e)
{
ServiceReference1.WebService1SoapClient cli = new ServiceReference1.WebService1SoapClient();
ServiceReference1.InSoapHeader inheader = new ServiceReference1.InSoapHeader() { Ip="127.0.0.1",Token="N",UserName="N"};
ServiceReference1.OutSoapHeader outheader; string result = string.Empty;
outheader=cli.HelloWorld(inheader,out result);//这时候返回值自动放到了参数中,和普通的方法还是有区别的。 System.Diagnostics.Debug.WriteLine(outheader.Ip);
//输出123123
}
Webservice返回SoapHeader的更多相关文章
- WebService基于SoapHeader实现安全认证(一)
本文转载:http://www.cnblogs.com/houleixx/archive/2009/08/22/webservice-soapheader-security.html WebServi ...
- C#访问Java的WebService添加SOAPHeader验证的问题
原文:C#访问Java的WebService添加SOAPHeader验证的问题 这两天做与公司OA的接口,发现C#访问Java的WebService需要提供一个SOAP的头验证信息,但是WebServ ...
- WebService返回DataTable
http://blog.csdn.net/wxnjob/article/details/8638420 webservice返回datatable时报序列化错误 以下三种方案的实质应该都是序列化的,有 ...
- 分析案例:应用服务无响应,任务管理器中发现大量w3wp僵尸进程----等待异构系统WebService返回值
问题描述: 某二次开发的项目反馈,不定期出现应用服务器无响应的情况,登录服务器发现任务管理器中有大量的w3wp僵尸进程. 分析过程: 针对同一进程每隔15秒抓取dump,连续抓取3个,对比 ...
- 【转】java 访问.net webservice返回的数据集
转自[转的也是转的][http://blog.csdn.net/fox123871/article/details/8637839] 1. 概述 很多正在开发或者打算开发XML Web Service ...
- JQuery请求WebService返回数据的几种处理方式
打开自己的博客仔细浏览了一番,发现已经好久没有写博客了,由于最近一直比较忙碌懈怠了好多.默默反省三分钟.......言归正传,现在就对最近在学习webservice的过程中遇到的几种类型的问题中我的理 ...
- WebService传递XML数据 C#DataSet操作XML 解析WebService返回的XML数据
Webservice传递的数据只能是序列化的数据,典型的就是xml数据. /// <summary> /// 通过用户名和密码 返回下行数据 /// & ...
- WebService返回数据前台获取并处理JSON的相关问题
起因: 记录这个问题的起因是一次解答网友的问题,当初自己初次接触webservice时也遇到过,但在写答案时,并没有很深的印象,只是知道webservice在后台返回值的时候,那里是有个坑的.网友问的 ...
- C#调用Java的WebService添加SOAPHeader验证(2)
C#调用Java的WebService添加SOAPHeader验证 上一篇链接如上,更像是 Net下采用GET/POST/SOAP方式动态调用WebService的简易灵活方法(C#) 来处理xml, ...
随机推荐
- MVC中使用EF的技巧集(二)——分部验证
1.从数据库生成模型后,再次更新模型时,之前设置的验证规则会丢失. 解决方法:在Models文件夹中新建一个空白类,把它命名为shujuyanzh.cs(类名可以自定),然后把Models中自动生成的 ...
- php性能调优
第一章 针对系统调用过多的优化 我这次的优化针对syscall调用过多的问题,所以使用strace跟踪apache进行分析. 1. apache2ctl -X & 使用-X(debug)参 ...
- OC基础数据类型-NSValue
1.NSValue:将指针等复杂的类型存储为对象 struct sct { int a; int b; }sctt; NSValue * value = [[NSValue alloc] initWi ...
- Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)
ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...
- python中的装饰
在面向对象(OOP)的设计模式中,decorator被称为装饰模式.OOP的装饰模式需要通过继承和组合来实现,而Python除了能支持OOP的decorator外,直接从语法层次支持decorator ...
- Guava包学习---Sets
Sets包的内容和上一篇中的Lists没有什么大的区别,里面有些细节可以看一下: 开始的创建newHashSet()的各个重载方法.newConcurrentHashSet()的重载方法.newTre ...
- POJ2720 Last Digits
嘟嘟嘟 一道题又写了近两个点-- 这道题直接暴力快速幂肯定会爆(别想高精),所以还是要用一点数学知识的- 有一个东西叫欧拉降幂公式,就是: \(x ^ y \equiv x ^ {y \ \ ...
- 发送邮件 html格式
下面黄色代码为实现发送邮件 FileStream fs = new FileStream(Server.MapPath("../ImportUserIOExcel/productConsul ...
- linq查询语法和方法-簡單用法
來自:http://www.cnblogs.com/knowledgesea/p/3897665.html 1.简单的linq语法 //1 var ss = from r in db.Am_recPr ...
- java 常用类2
1.1 日期时间类 时间戳(timestamp):距离特定时间的时间间隔. 计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(ms). 计算机中时间2019-04- ...