我使用以下代码在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();
}
}
答案 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。这就是为什么它不能在这种情况下使用。
我不确定你想要完成什么。如果您尝试通过串行端口连接某些设备来访问页面,则需要编写一些在该设备上执行的代码。