Asp.net 获取HttpRequest错误后如何绕过并继续

Asp.net 获取HttpRequest错误后如何绕过并继续,asp.net,Asp.net,我有以下代码。我不知道我的目标是否正确…登录并继续 // Create the atual Request instance HttpWebRequest request = CreateWebRequest(requestURI, data.Length); request.ContentLength = data.Length; request.KeepAlive = false; request.Timeout

我有以下代码。我不知道我的目标是否正确…登录并继续

        // Create the atual Request instance
        HttpWebRequest request = CreateWebRequest(requestURI, data.Length);
        request.ContentLength = data.Length;
        request.KeepAlive = false;
        request.Timeout = 30000;

        try
        {
            requestStream = request.GetRequestStream();
            requestStream.Write(data, 0, data.Length);
            requestStream.Close();

            // get response
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            using (response)
            {
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    _requestError = true;
                    string message = String.Format("POST failed. Received HTTP {0}", response.StatusCode);
                    throw new ApplicationException(message);
                }

                responseStream = response.GetResponseStream();
            }
        }
        catch (Exception ex)
        {
            _requestError = true;
        }
无法解析远程名称:“api10.aaa.com” 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.Net.WebException:无法解析远程名称:“api10.aaa.com”

Source Error:

Line 87:                     {
Line 88:                         if (response.StatusCode != HttpStatusCode.OK)
Line 89:                         {
Line 90:                             _requestError = true;
Line 91:                             string message = String.Format("POST failed. Received HTTP {0}", response.StatusCode);
我们的global.asax ApplicationError会检测堆栈中的任何错误


现在我的问题是:这次我故意将Uri更改为无效,以便在测试时得到一个错误,并将其添加到_requesterrorboo private字段标志中,如果在请求过程中出现错误,我想公开该标志。因为我想测试请求失败的情况。如果请求失败,我希望能够登录并继续…而不是停止。现在,它停止了。我希望能够通过公开的公共属性访问_requestError。上面的代码实际上是在一个基本请求类中。在我的一个代码behind中,我使用了这个类的一个实例,上面的代码被调用。我希望能够得到一个bool标志,如果发生任何重大事件,requestError,因为在我wnat后面的代码中使用它来记录到一些表中…不是我们的日志表,而是与一些业务逻辑和其他对象相关的其他内容。所以我的观点是,我无法让这段代码不停止运行时。发生此错误后,我希望继续,否则我将永远没有机会使用我的公共属性baed off(u requestError)。

在我看来,传递给requestUri变量的值是api10.aaa.com

试着在你的浏览器中输入,看看会发生什么。您需要将requestUri设置为有效的uri,这意味着您可以在浏览器中键入并导航到该uri

增加

如果是这样的话,这可能会起作用

在注释和代码修改后添加

嗯。这是有道理的

然后我相信发生的是错误发生在这条线上:

requestStream = request.GetRequestStream();
如果是这种情况,那么try块中的其他任何内容都不会执行,因为异常会直接跳到Catch块中


因此,您必须在这一行周围放置try/catch,或者将所有其他代码移到Finally块。

不,我有意将其更改为无效Uri。然后,我希望能够在请求出现问题(例如错误的Uri)时绕过任何错误,并且能够进行代码隐藏类调用,并且使用包含此代码的类的实例将能够通过公共属性获取_requestError并对其进行处理。现在,如果我得到任何错误无效URi或任何情况下,我会抛出异常。我想把它记录下来,然后继续。是我的错,我没有完成该死的初始线程。天哪。现在读吧。