我当前正在从ASP.net页面调用from服务。我试图调用一个基于REST的web服务来请求某个操作,结果返回了一个404 (这代表了我的应用程序的一个特定错误)。我试图捕获错误,但当返回404时,我的应用程序继续挂起,最终捕获到以下错误。
System.Net.WebException ={“基础连接已关闭:接收时发生意外错误。”}
为什么在web服务响应404之后的2秒内,我会捕获到一个不同的错误?
try
{
newPassword = Customer.ResetPassword(_transaction.Centre.Id, newPassword);
}
catch(WebException ex)
{
HttpWebResponse response = (HttpWebResponse)ex.Response;
if ((response != null) && (response.StatusCode == HttpStatusCode.NotFound))
{
//then the email address doesnt exist
ErrorPage(104);
}
else
{
ErrorPage();
}
}
catch (Exception ex)
{
ErrorPage();
}这就是为什么:
Request currentRequest = new Request(uri,
Communication.Request.HttpRequestType.POST,[hidden][hidden]);
Response response = currentRequest.Send(Serializer.Serialize<ResetPassword (resetPassword));
return Serializer.Deserialize<ResetPassword>(response.BodyData);请忽略隐藏的标签。我不得不在公众的视线下隐藏这一点。然而,我希望这能有所帮助。
感谢大家的帮助!
发布于 2011-08-04 23:54:09
由于您提供的关于系统的信息很少:
您可能正在提前终止您的web服务调用,如下所示
HttpContext.Current.Response.End()webservice代码(用.NET编写)可能正在尝试完成请求,但您已经提前关闭了连接。Response.Redirect()也会发生这种情况,但你永远不会在web端看到它,因为你已经完成了对用户的输出。与你的404无关。web服务代码抛出WebException,但是没有任何东西需要处理/格式化输出。
更新
根据您的反馈,我只能推断您的问题可能是:
(如何处理发送到how服务的数据中的数据)
您应该下载Fiddler2并嗅探您的wire服务的http请求,以验证到底发生了什么。如果一切都通过了,那么我能想到的只有两件事:
Request/Response的某些内容不正确。您可以改用WebClient,然后调用UploadData(...)或UploadString(...)将数据传输到way服务中的webservice.WebException:基础连接已关闭:接收时发生意外错误。仅当客户端希望接收数据(如标头后的正文)但服务器提前终止响应时,才应发生。
https://stackoverflow.com/questions/6943913
复制相似问题