我正在爲一些公開頁面創建一個鎖定機制,該機制應該只允許一個用戶同時編輯它們。客戶端向請求鎖的服務器發出GET API調用,該鎖返回MVC ActionResult對象。出於某種原因,當我在本地運行程序並返回new HttpConflictResult("Cannot acquire lock", message);
(表示獲取鎖失敗)時,它工作正常。錯誤消息被正確發送和接收,並可以顯示在警報或任何需要的。但是,當我遠程訪問站點時,該消息將被覆蓋,「頁面未顯示,因爲存在衝突。」我做錯了什麼或者這是IIS的一個'功能'或什麼?如果是這樣,是否有辦法解決這個問題,這樣我仍然可以得到我想要給客戶的信息?HTTP失敗響應覆蓋非本地客戶端的響應正文
在此先感謝您的幫助!
編輯:對不起,忘了HttpConflictResult是一個繼承類。這裏有一些信息:
public class HttpConflictResult : HttpErrorResult
{
public HttpConflictResult() : this(string.Empty) { }
public HttpConflictResult(string errorMessageResource) : this("Conflict", errorMessageResource, true) { }
public HttpConflictResult(string statusMessage, string errorMessage) :
base(409, statusMessage, errorMessage) { }
}
public class HttpErrorResult : ActionResult
{
protected int _statusCode;
protected string _statusMessage;
protected string _errorMessage;
public HttpErrorResult(int statusCode, string statusMessage, string errorMessageResource)
{
_statusCode = statusCode;
_statusMessage = statusMessage;
_errorMessage = errorMessage;
}
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.StatusCode = _statusCode;
context.HttpContext.Response.StatusDescription = _statusMessage;
if(_errorMessage != null)
{
context.HttpContext.Response.ContentType = "application/json; charset=utf-8";
context.HttpContext.Response.Clear();
System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
context.HttpContext.Response.Write(ser.Serialize(new { message = _errorMessage }));
}
}
}
讓我知道,如果我離開了其他東西。再次感謝!
呃,小心解釋一下'HttpConflictResult'?你調用它的方式? – 2011-05-20 18:06:47
你正在發送一個錯誤代碼。 IIS將寫出消息來保護您。你必須配置IIS。我不記得你需要更改ATM – 2011-05-20 22:22:13