相关疑难解决方法(0)

异步HttpWebRequest,无需在Web应用程序中等待

在我的Web应用程序(ASP.NET)中,我有一块代码块,它使用HttpWebRequest来调用REST服务并继续执行.现在,它比我想要完成完整的Web请求需要更长的时间.问题是REST服务返回的内容无用.理想情况下,我想向REST服务发送异步Web请求,然后不等待响应.问题是我已经尝试过使用它了

request.BeginGetResponse(New AsyncCallback(AddressOf myFunc), Nothing)
Run Code Online (Sandbox Code Playgroud)

要启动异步请求而不是等待(我认为这将是异步请求的默认行为),它会在执行下一行代码之后继续执行回调函数BeginGetResponse.

我怀疑ASP.NET可能会在Web应用程序中将其转换为同步请求.我被引导相信这是因为有一个IAsyncResult result对象传递给回调函数,当我检查它的CompletedSynchronously属性时,它总是设置为true.

有没有人知道是否可以在ASP.NET Web应用程序中执行异步HttpWebRequest(没有等待),或者它是否总是转换为同步请求?

asp.net asynchronous httpwebrequest

21
推荐指数
3
解决办法
2万
查看次数

HttpWebRequest/HttpResponse:如何在响应中发送数据?

我有一个客户端和一个服务器.

在客户端我有:

HttpWebRequest request = 
    (HttpWebRequest)WebRequest.Create("http://localhost/fa/Default.aspx");
request.Method = "POST";                

byte[] data = Encoding.ASCII.GetBytes(GetSAMLRequestB64());

request.ContentType = "text/xml";
request.ContentLength = data.Length;
Stream stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
Run Code Online (Sandbox Code Playgroud)

在服务器端,我有:

public void ProcessRequest(HttpContext httpContext) 
{
    HttpResponse response = httpContext.Response;             
    response.Clear();
    response.BufferOutput = true;
    response.StatusCode = 200; // HttpStatusCode.OK;
    response.Write("Hello");
    response.ContentType = "text/xml";
    response.End();
}
Run Code Online (Sandbox Code Playgroud)

客户端收到正确的响应StatusCode.虽然,如果我(int)response.ContentLength;在客户端上,我得到0.我收到响应(客户端)后,我无法读取字符串"Hello".

.net c# httpresponse httpwebrequest

6
推荐指数
1
解决办法
3万
查看次数

标签 统计

httpwebrequest ×2

.net ×1

asp.net ×1

asynchronous ×1

c# ×1

httpresponse ×1