gpt4 book ai didi

asp.net-mvc-3 - 当 HTTP 响应状态设置为 400 时 IIS 覆盖 HTTP 响应文本

转载 作者:行者123 更新时间:2023-12-03 12:34:15 25 4
gpt4 key购买 nike

我正在构建一个带有 IIS 7.5 后端的 MVC 3 应用程序。在我的 Controller 上,我有允许用户添加/编辑域对象的操作方法。 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 配置为返回自定义的、特定于操作的字符串?

最佳答案

我们最终去了

 <system.webServer>
<httpErrors errorMode="Custom" existingResponse="PassThrough" />
</system.webServer>

在 web.config 中。这允许设置状态代码的自定义错误使 IIS 不受干扰。

关于asp.net-mvc-3 - 当 HTTP 响应状态设置为 400 时 IIS 覆盖 HTTP 响应文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8900001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com