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