专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »DotNet » asp.net原理:asp.net中webservice请求发送原理和过程的初步分析 »正文

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

来源: 发布时间:星期六, 2009年3月28日 浏览:0次 评论:0


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

于是自己花了点时间对asp.netwebservice机制作了下探索

解决方案:

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

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

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



以下是测试过程:

先把结论给出:

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

客户端代码般类似这样:

ws.Service1 s = WSWeb.ws.Service1;
s.HelloWorld;
s.MyTestMethod("sssssssssssssttttt");

1.在ws.Service1 s = WSWeb.ws.Service1;运行这行时并不会服务器端构造思路方法而是本地生成proxy类构造思路方法

2.只有在运行这行时:s.HelloWorld;才会将思路方法及参数形成soap绑定到http发送到服务器端此时服务器端构造思路方法然后服务器端HelloWorld

运行第3行s.MyTestMethod("sssssssssssssttttt");时也是这样会先调下服务器端构造思路方法服务器端MyTestMethod



测试代码:



Code
//客户端代码
Write("Client端构建对象开始");
ws.Service1 s = WSWeb.ws.Service1;
Write("Client端构建对象完毕");

Write("Client端开始HelloWorld");
s.HelloWorld;
Write("Client端HelloWorld完毕");

Write("Client端开始MyTestMethod");
s.MyTestMethod("sssssssssssssttttt");
Write("Client端MyTestMethod完毕");


Code
Write("进入服务器端基类构造思路方法");

.IO.FileInfo fi = .IO.FileInfo(PATH);
(!fi.Exists)
fi.Create;

HttpRequest req = HttpContext.Current.Request;
.IO.Stream stream = req.InputStream;
stream.Position = 0;
.IO.StreamReader sr = .IO.StreamReader(stream);

StringBuilder sbRequest = StringBuilder;
String line;
// Read and display lines from the file until the end of
// the file is reached.
while ((line = sr.ReadLine) != null)
{
sbRequest.Append(line + "\n");
}

Write(sbRequest.);

Write("离开 服务器端基类构造思路方法");
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: