【发布时间】:2020-03-24 14:27:05
【问题描述】:
我有一个带有基本身份验证的 Web 服务(通过自定义数据库签入代码),当用户凭据错误时返回 HTTP 401 + SOAP FAULT 消息。这适用于我的本地 IIS 7,但不适用于 Azure...
当我通过应用服务将其移至 Azure 并插入错误凭据时,我总是收到以下消息:
HTTP 401
"You do not have permission to view this directory or page.".
但我想要 SOAP 错误格式的自定义错误消息!
经过数小时的研究,我发现如果我的代码返回带有 HTTP 401 状态的响应,Azure 会像上面的消息一样将其翻译给最终用户,而忽略我的自定义错误消息。
我用“hello world”SOAP 端点做了另一个例子:
[WebMethod]
public string HelloWorld()
{
HttpContext.Current.Response.StatusCode = 401;
return "Hello world";
}
在我的本地 IIS 中,我得到了 HTTP 401“Hello world”,但是当我将它部署到 Azure 时,我得到了相同的“你没有权限......”
¿如何禁用/避免/躲避 Azure 401 消息转换并返回我自己的自定义错误消息 (SOAP FAULT)?
注意:我已经尝试在 Azure 应用服务中禁用身份验证,启用“允许匿名请求”等。
解决方案
问题出在 IIS 中。将以下行添加到我的 web.config 中。
<httpErrors existingResponse="PassThrough" />
更多信息:https://stackoverflow.com/a/47307706/3763467
我会为面临相同问题并认为问题出在 Azure 的其他人保留相同的标题/标签。
【问题讨论】:
标签: asp.net azure azure-web-app-service