【发布时间】:2012-01-17 18:49:51
【问题描述】:
我正在构建一个带有 IIS 7.5 后端的 MVC 3 应用程序。在我的控制器上,我有允许用户添加/编辑域对象的操作方法。 Action 处理 HTTP Post,返回值为 string,其中包含在保存过程中遇到的任何验证错误消息。以下是一种操作方法的示例:
[HttpPost]
public string CustomerEdit(CustomerModel customerModel)
{
var errorMessages = new StringBuilder();
var serverErrors = new List<string>();
//Map to a customer domain object
Mapper.CreateMap<CustomerModel, Customer>();
var customer = Mapper.Map<CustomerModel, Customer>(customerModel);
if (customerModel.Oper == "del")
{
var customerIds = new List<Guid>();
customerIds.Add(customer.Id);
if (!_serverService.DeleteCustomers(customerIds))
{
errorMessages.Append("The item could not be deleted");
Response.StatusCode = Constants.STATUS_SERVER_ERROR;
}
}
else
{
//Validate
if (!_serverService.ValidateCustomer(customer, out serverErrors))
{
foreach (var error in serverErrors)
{
ModelState.AddModelError("Validation", error);
}
}
//Save
if (ModelState.IsValid)
{
var saveStatus = _serverService.SaveCustomer(ref customer, _id);
if (!saveStatus)
{
errorMessages.Append("The server encountered and error during Save");
Response.StatusCode = Constants.STATUS_SERVER_ERROR;
}
}
else
{
errorMessages.Append(GetValidationErrors(ModelState));
Response.StatusCode = Constants.STATUS_SERVER_ERROR;
}
}
return errorMessages.ToString();
}
如果出现错误,我需要将 Response.StatusCode 属性设置为 400/500 的值,并返回一个串联的详细错误消息字符串。不幸的是,IIS 总是将我的错误字符串从响应测试中剔除,并且(在 400 错误的情况下)将其替换为字符串 'Bad Request'
当状态码设置为 400 时,有没有办法将 IIS 配置为返回自定义的、特定于操作的字符串?
【问题讨论】:
标签: asp.net-mvc-3 iis-7.5