在这种情况下无法获得响应

时间:2017-03-20 02:23:23

标签: c# asp.net

我使用以下代码在asp.net C#中使用第一个Web表单打开第二个Web表单:

private void Next_frm()
{

    if ((UserID == "")) 
    {
    }
    else
    {
        Response.Redirect("product.aspx");
    }
}

但是这会导致错误:System.Web.dll中出现类型为“System.Web.HttpException”的未处理异常:响应在此上下文中不可用。

我该怎么办?

从此表格致电:

private void comRFID_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{   System.Diagnostics.Debug.WriteLine("comRFID_DataReceived");
    comRFID.Read(hex, 0, hex.Length);
    Send_Beep();
    string[] strCard1 = { "2", "12", "18", "128", "4", "0", "149", "124", "243", "50", "224", "243" };
    string[] strbuffer = { hex[0].ToString(), hex[1].ToString(), hex[2].ToString(), hex[3].ToString(), hex[4].ToString(), hex[5].ToString(), hex[6].ToString(), hex[7].ToString(), hex[8].ToString(), hex[9].ToString(), hex[10].ToString(), hex[11].ToString() };
    if ((strbuffer[11].ToString() == strCard1[11]))
    {
        UserID = "1234";
        Send_Beep();
        System.Diagnostics.Debug.WriteLine(("UserId: " + UserID));
        comRFID.Close(); 
       Next_frm();
       }
    else
    {
        Response.Write("<script>alert('Card Undefined, Please Register Your Card.');</script>");
        Send_cmd();
    }
}

1 个答案:

答案 0 :(得分:1)

看着这个原型......

private void comRFID_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)

...我猜这个方法在通过串口接收到帧时处理事件。

您可能知道,Web服务器通信通常通过启动ASP.NET请求实例的HTTP请求发生。发生这种情况时,ASP.NET构造一个HttpContext对象并使用有关请求的信息(例如HttpRequest本身及其Url和QueryString属性)填充它。然后,它将请求分派给您映射到URL的任何处理程序(通常是System.Web.Page对象,或MVC中的Controller对象)。

当在HTTP请求之外引发事件时,没有HTTP上下文。您可以使用以下代码检测此情况:

bool contextExists = (HttpContext.Current != null);

如果没有HTTP请求,HttpContext就没有意义。如果有的话,会有一个&#34;串口上下文&#34;你必须自己实现。

无论如何,在没有HTTP请求的情况下,没有HttpContext,因此没有HttpResponse。这就是为什么它不能在这种情况下使用。

我不确定你想要完成什么。如果您尝试通过串行端口连接某些设备来访问页面,则需要编写一些在该设备上执行的代码。