我想驗證服務收到的HTTP請求。我想檢查是否存在所有必需的頭文件等。如果不是,我想拋出一個異常,這將在某個地方設置響應的正確響應代碼和狀態行。我不想將用戶重定向到任何特定的錯誤頁面,只是發送答案。在Global.asax中驗證HTTP請求並返回特定HTTP響應的正確方法是什麼?
我想知道我應該把代碼放在哪裏?我的第一個猜測是驗證Application_BeginRequest
中的請求,拋出異常並在Application_Error
中處理它。
例如:
public void Application_BeginRequest(object sender, EventArgs e)
{
if(!getValidator.Validate(HttpContext.Current.Request))
{
throw new HttpException(486, "Something dark is coming");
}
}
public void Application_Error(object sender, EventArgs e)
{
HttpException ex = Server.GetLastError() as HttpException;
if (ex != null)
{
Context.Response.StatusCode = ex.ErrorCode;
Context.Response.Status = ex.Message;
}
}
顯然,在這種情況下,Visual Studio中抱怨在Application_BeginRequest
未處理的異常。它可以工作,因爲給定的代碼被返回給客戶端,但是我覺得這種方法有些問題。
[編輯]: 我已經刪除了關於自定義狀態行的第二個問題,因爲這些問題沒有真正連接。
感謝您的幫助。
WCF從哪裏進場?您是否構建了在IIS中託管的REST服務? –
嗯,是的。我相信這是其中一種選擇,反對託管服務作爲託管的Windows服務/託管應用程序(根據msdn) –