2017-03-20 52 views
0

我使用下面的代碼使用asp.net C#第一個網頁形式打開第二個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

請參閱我的兩個表單項目:http://stackoverflow.com/questions/34975508/reach-control-from-another-page-asp-net – jdweng

+0

但是,當我在一個按鈕下編寫代碼時沒有問題。 –

+0

你的背景是什麼?你從哪裏來的? – vesan

回答

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); 

的HttpContext的就沒有任何意義,如果沒有HTTP請求。如果有的話,將會有一個「串口上下文」,你將不得不自己實現。

無論如何,在不存在的HTTP請求的,沒有HttpContext的,因此沒有的HttpResponse。這就是爲什麼它在這種情況下不可用。

我不知道你要完成的任務。如果您試圖通過串口連接某個設備來訪問頁面,則需要編寫一些在該設備上執行的代碼。

+0

它使用以下代碼:'ProcessStartInfo sInfo = new ProcessStartInfo(「http:// localhost:51571/product.aspx」); Process.Start(sInfo);'但它重定向到一個'新的'web表單而不是當前的選項卡。有沒有人有解決這個問題的想法? –

+0

你是什麼意思「當前標籤」?有沒有在其他地方打開的頁面? –

+0

該頁面將在新選項卡上打開,而不是替換當前的選項卡,而我的當前選項卡仍然存在。 –