asp.net中webservice请求发送原理和过程的初步分析

需求:作为服务方,需要监控每个调用webservice的客户端。需要监控的信息大致如下:客户端的ip,客户端调用了哪个类的哪个方法。

于是自己花了点时间对asp.net的webservice机制作了一下探索。

解决方案:

在接口项目中编写一个所有webservice接口的基类,在此基类的构造方法中,通过分析HttpContext.Current.Request得到想要的信息。

1.ip可以通过HttpContext.Current.Request.UserHostAddress得到

2.调用发哪个方法以及参数等都可以通过分析HttpContext.Current.Request.InputStream得到

这是我用下面的代码输出的InputStream的内容:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body>  <MyTestMethod xmlns="http://tempuri.org/">    <msg>abcd</msg>  </MyTestMethod></soap:Body></soap:Envelope>

看到了吧?调用的方法是MyTestMethod,参数是msg,值是abcd

以下是测试的过程:

先把结论给出:

asp.net的程序在添加对webservice的引用时,客户端会生成代理proxy类。

客户端的调用代码一般类似这样:

ws.Service1 s = new WSWeb.ws.Service1();

s.HelloWorld();

s.MyTestMethod("sssssssssssssttttt");

1.在ws.Service1 s = new WSWeb.ws.Service1();运行这行时,并不会调用服务器端的构造方法,而是调用本地生成的proxy类的构造方法。

2.只有在运行这行时:s.HelloWorld();才会将方法及参数形成soap,绑定到http,发送到服务器端。此时,先调用服务器端的构造方法,然后调用服务器端的HelloWorld

运行第3行s.MyTestMethod("sssssssssssssttttt");时也是这样,会先调一下服务器端的构造方法,再调用服务器端的MyTestMethod。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索服务器
, webservice
, request.inputstream
, helloworld
, 方法
, service
, httpcontext
ASP.NET调用WebService
,以便于您获取更多的相关知识。

时间: 2024-11-03 05:07:56

asp.net中webservice请求发送原理和过程的初步分析的相关文章

asp.net中WebService属性记录

  1 webservice 属性 [webservice(description="ddddd"),namespace="http://`````",Name="webservice的名称"] 2 webmethod:web服务方法(包含以下6个属性) description:对webservice服务类中方法的注释 enablesession:标识当前webservice是否启动session;默认为false;(如果false,则无法使用a

在ASP.NET中实现POST发送数据

asp.net|数据 下面的代码实现了与以前XMLHTTP类似的功能.代码如下:      HttpSendData.ASPx      <%@ Page language="<a href="http://dev.21tx.com/dotnet/csharp/" target="_blank">C#</a>"%>   <%@ Import Namespace = "System"%&

ASP.NET中Webservice安全 实现访问权限控制_实用技巧

一. 概述: Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务.它逻辑性的为 其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果.由于它通过internet进行调用,必然存在网络用户都可以调用的安全问题.如何实现webservice的访问 权限限制,是使用webservice用户

asp.net 中静态方法和动态方法调用的区别实例分析_实用技巧

复制代码 代码如下: //定义静态方法class SQLHelper       {        public static string aaa()        {            return "你好"               }    } 调用:SQLHelper.aaa(); // 类名.方法名 //定义动态方法class SQLHelper       {        public string aaa()        {            return

asp.net中“从客户端中检测到有潜在危险的Request.Form值”的错误

在提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的.这个给出各个版本.net的解决方法. asp.net 2.0 通常解决办法 方案一: 将.aspx文件中的page项添加ValidateRequest="false" ,如下: <%@ Page ValidateRequest=&quo

asp.net中“从客户端中检测到有潜在危险的Request.Form值”错误的解决办法_实用技巧

在提交表单时候,asp.net 提示:"从客户端(......)中检测到有潜在危险的 Request.Form 值" .asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的. 这里给出不同版本.net的解决方法. asp.net 2.0 通常解决办法 方案一: 将.aspx文件中的page项添加ValidateRequest="false" ,如下: <%@ Page ValidateRequest=&qu

as net-ASP.NET控制webservice请求数

问题描述 ASP.NET控制webservice请求数 用VS.NET做一个wenbservice服务用于客户调用,但是客户同时并发数量太大就会有问题,如何指定某个客户同一时间内请求串数,如果超过这个数量的话,那么就给客户反馈一个友好提示,求各位技术大牛给出出设计思路???

asp.net中利用ashx实现图片防盗链的原理分析_实用技巧

 直接分析盗链原理:看下面用httpwatch截获的http发送的数据 GET /Img.ashx?img=svn_work.gif HTTP/1.1 Accept: */* Referer: http://www.jb51.net/ Accept-Language: zh-cn UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NE

ASP.NET 中 Session 实现原理浅析 [2] 状态管理器

asp.net|session 状态管理本来是一件很美好的事情,嘿嘿,只可惜总是有些厂商在实现的时候考虑得不那么周全.例如 MS 在 ASP 中的状态管理实现就比较烂,因为只实现了一个进程内的基于内存的状态管理,故而存在很多问题: 1.所有的 Session 数据都保存在 Web 服务的进程中,会造成服务器支持会话数量受到服务器内存资源的限制问题,同时也因为大量非活动会话导致内存被无效占用. 2.服务器进程崩溃会导致所有的会话数据丢失. 3.会话无法跨进程或在负载均衡情况下使用,除非负载均衡技术