IIS перезаписывает текст ответа HTTP, когда состояние ответа HTTP установлено как 400

Я создаю приложение 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 ошибок) добавляет, заменяет ее строкой «Плохой запрос»

Есть ли способ настроить IIS для возврата пользовательского, Action- конкретная, строка, когда код состояния установлен на 400?

19
задан TheoryOfLight 17 January 2012 в 18:49
поделиться