Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在异步请求完成时获取其返回_C#_Asp.net_.net - Fatal编程技术网

C# 在异步请求完成时获取其返回

C# 在异步请求完成时获取其返回,c#,asp.net,.net,C#,Asp.net,.net,我有一个异步请求,它会触发到另一个网页来进行一些处理。下面是代码。我对此有些问题。我希望请求被触发,然后被忽略,直到它完成,然后当它完成时,我想发出一封电子邮件 看来回调从未启动过。我错过了什么 private HttpWebRequest req = null; private IAsyncResult result = null; protected void btnUpload_Click(object sender, EventArgs e) { StringBuilder p

我有一个异步请求,它会触发到另一个网页来进行一些处理。下面是代码。我对此有些问题。我希望请求被触发,然后被忽略,直到它完成,然后当它完成时,我想发出一封电子邮件

看来回调从未启动过。我错过了什么

private HttpWebRequest req = null;
private IAsyncResult result = null;

protected void btnUpload_Click(object sender, EventArgs e)
{
    StringBuilder pageUrl = "http://myurl.example.com";

    // Initialize web request
    req = (HttpWebRequest)WebRequest.Create(string.Format("{0}", pageUrl.ToString()));
    req.Method = "GET";

    // Start the asynchronous request.
    try
    {
        result = (IAsyncResult)req.BeginGetResponse(new AsyncCallback(RespCallback), null);
    }
    catch (Exception ex)
    {
        //lblProcess.Text += ex.Message.ToString();
    }
}


protected void RespCallback(IAsyncResult ar)
{
    using (WebResponse resp = req.EndGetResponse(ar))
    {
        //using (StreamReader reader = new StreamReader(resp.GetResponseStream())) {
        //    text = reader.ReadToEnd();
        //}

    //function that just sends an email
        SendBatchEmail();
    }
}

sendBatchEmail从未被调用。编辑它,只是想说,非同步web请求您可能遇到异常。调用EndXXXX方法时引发错误。捕捉RespCallback中的异常,看看有什么问题。好的,我会尝试一下,尽管即使在调试模式下运行时回调上有断点,它也不会被触发。对于web服务器来说,这不是真正合适的逻辑。他们并不是真的会忘记一切。它们在HTTP请求和响应周期的上下文中运行。如果此处理很短,则可以同步执行所有操作。如果需要的时间太长,那么您应该在后台执行此代码,最好使用单独的应用程序来执行。