2017-05-22 24 views
1

我有一個外部應用程序(從不同的公司寫的),當點擊一個按鈕時觸發一些請求到我的asp.net Web應用程序。我的應用程序在https://localhost:59917/Main.aspx上運行。如果我點擊外部程序中的請求按鈕,它會顯示以下內容:在asp.net中獲取傳入http請求C#

08:53:25 Requesting web page : https://localhost:59917/Main.aspx?token=mcQYVqoe7LxmBx7jgHBq6FtXXp4uPCzX0FDZStiZDFMDd4l6oB3x5CgysXJKgy2y 

所以這個程序現在正在請求我的web應用程序。我現在必須得到這個請求的給定參數(在這個例子中,我需要讀取參數token)。我發現this thread,在我後面的代碼(Main.aspx.cs)試過如下:

protected void btnListener_Click(object sender, EventArgs e) 
{ 
    string token = Request.QueryString["token"]; 
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AlertToken", "alert('" + token + "');", true); 
} 

但這返回一個空字符串。由於我是新來的asp.net和web開發,我不確定是否正確理解HttpRequest類。這甚至是獲得我需要的論據的正確方法嗎?

+1

當IsPostBack == false時,上面的代碼應該被移動到Page_Load方法下的main.aspx.cs文件中。 – Steve

+0

爲什麼在'Page_Load()'方法中?這種方法只在啓動時被觸發,對吧?但是這個請求可能隨時被解僱。 – Therk

+0

每次請求到達頁面時都會觸發Page_Load。所以,如果外部應用程序向main.aspx發送請求並傳遞提到的查詢字符串,則應該在main.aspx.cs中收到Page_Load事件 – Steve

回答

2

如果外部應用程序對main.aspx頁面的請求則的Page_Load發生在Page Lifecycle

事件,因此,你可以簡單地移動你的代碼已經被寫爲您的Page_Load事件處理程序設計師

protected void main_Load(object sender, EventArgs e) 
{ 
    string token = Request.QueryString["token"]; 
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AlertToken", "alert('" + token + "');", true); 
} 

其實的Page_Load事件每次呼籲該頁面的請求時槽的ASP.NET引擎還當你點擊一個,但噸在同一頁上。

在點擊按鈕的事件處理程序調用之前,您會收到對Page_Load事件處理程序的調用。您可以發現這是否是您的頁面第一次加載時正在查看IsPostBack屬性(當加載是在同一頁面上執行的操作的結果時爲true,當加載頁面時將其顯示爲false以顯示其界面到結尾-user)