Estoy construyendo una aplicación MVC 3 con un servidor IIS 7.5. En mi controlador, tengo métodos de acción que permiten al usuario agregar/editar objetos de dominio. La acción maneja la publicación HTTP, tiene un valor de retorno de la cadena que contiene los mensajes de error de validación encontrados durante el proceso de guardado. Este es un ejemplo de un método de acción:IIS que sobrescribe el texto de respuesta HTTP cuando el estado de respuesta HTTP está establecido como 400
[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();
}
En el caso de un error, necesito establecer la propiedad Response.StatusCode a un valor de 400/500, y devolver una cadena concatenada de mensajes de error detallados . Desafortunadamente, IIS siempre elimina mi cadena de error de la prueba de respuesta y (en el caso de 400 errores) agrega la reemplaza con la cadena 'Solicitud incorrecta'
¿Hay alguna manera de configurar IIS para devolver una acción personalizada? -específico, cadena cuando el código de estado está establecido en 400?
He encontrado una manera de hacer esto, por favor vea mi respuesta para más detalles – TheoryOfLight