asp.net - Azure 处理自定义 HTTP 401
问题描述
我有一个具有基本身份验证(通过自定义数据库签入代码)的 Web 服务,当用户凭据错误时返回 HTTP 401 + SOAP FAULT 消息。这适用于我的本地 IIS 7,但不适用于 Azure ......
当我通过应用服务将其移动到 Azure 并插入错误凭据时,我总是收到以下消息:
HTTP 401
"You do not have permission to view this directory or page.".
但我想要 SOAP Fault 格式的自定义错误消息!
经过数小时的研究,我发现如果我的代码返回带有 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 的其他人保留相同的标题/标签。
解决方案
听起来您的 web.config 文件可能已设置为启用了自定义错误。
您能否检查您的 web.config 文件并将客户错误设置为开启?
<customErrors="off" />
推荐阅读
- swift - 没有更多上下文 AVAudioSession 的表达式类型不明确
- python - OpenERP 7:fields.function return [object Object]
- xpath - Handling
tag in xpath through cucumber - excel - Excel VBA - 在一张纸上找到并粘贴到另一个向下移动的目标单元格上的例程
- kubernetes - 可以在不同的命名空间中设置 Kubernetes 监控
- python - “CondaVerificationError:找不到路径'.../iTerm.app'。” 创建 conda 环境时
- javascript - 移除元素的时间复杂度
- javascript - 如何更改 Material-ui React 表格中的表格单元格宽度
- php - 根据php中的下拉值将数据库值获取到多个文本框
- android - 如何在谷歌分析中添加指标“唯一屏幕视图/会话”