我正在为一些公开页面创建一个锁定机制,该机制应该只允许一个用户同时编辑它们。客户端向请求锁的服务器发出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