Я создаю приложение MVC 3 с бэкэнд IIS 7.5. На моем контроллере у меня есть методы действий, которые позволяют пользователю добавлять/редактировать объекты домена. Действие обрабатывает HTTP-сообщение, имеет возвращаемое значение строки, которое содержит любые сообщения об ошибках проверки, встречающиеся во время процесса сохранения. Вот пример одного метода действий:
[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"
Есть ли способ настроить IIS для возврата пользовательской строки Action-specific, когда для кода состояния установлено значение 400?