发表主题回复主题
1/10‹‹1››

利用WebClient或WebRequest为什么不能获取本地站点的网页内容?

zqshan

UID:6962

只看楼主   ¦        #1
  • 等级:0级
  • 昵称:
  • 组别:普通会员
  • 积分:12
  • 金币:2

我的问题的初衷是:
公司原来有一个ASP网站,现在我想挂接一些asp.net的页面上去,为从asp页面转到.net页面时,不再验证,我想利用原来的ASP验证方法,由于大部分ASP代码中都有checkLogin()的调用,因此我将这个调用单独写到一个AspToAspx.asp文件中:
-----------------------------------
<!--#include   file="conn.asp"-->
<%checkLogin()%>
-----------------------------------
其中,checkLogin()登录成功时,显示"登录成功",失败时显示“登录失败”,现在我想在.net中利用WebClient或WebRequest获取此网页内容,从中检索登录的结果字符串(以WebClient为例):
        string url = "http://127.0.0.1/AspToAspx.asp";//注意:asptoaspx.asp和本页面在同一个web站点。
        WebClient client = new WebClient();
        StreamReader sr = new StreamReader(client.OpenRead(url), System.Text.Encoding.Default);
        string result=sr.ReadToEnd();
        sr.Close();
        //这里对reslut进行登录结果的检索。
---------------------------
问题是当url是同一个站点时,报如下错误,如果是另外的站点工作就OK,如果要实现这种功能该如何编程?
[SocketException (0x3e5): 重叠 I/O 操作在进行中。]
   System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)  1018107
   System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)  119

[IOException: 无法从传输连接中读取数据: 重叠 I/O 操作在进行中。。]
   System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)  267
   System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)  21
   System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)  301
..............
如果上面的想法实现的话,ASP和asp.net就可以共享页面的公共部分,如:
  string url = "http://127.0.0.1/header.asp";
  WebClient client = new WebClient();  
  StreamReader sr = new StreamReader(client.OpenRead(url), System.Text.Encoding.Default);  
  string header=sr.ReadToEnd();  
  sr.Close();  
  Response.Write(header);
  //其它处理
//这样,就可以将asp网站中的公共的header部分直接拿到asp.net中。
Time: 08-04-09 15:58

 
›› 举报 ¦ 奖励 ¦ 引用 ¦  TOP   
发表主题回复主题
1/10‹‹1››