【问题标题】:Azure Handle custom HTTP 401Azure 处理自定义 HTTP 401
【发布时间】: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


    【解决方案1】:

    听起来您的 web.config 文件可能已设置为启用自定义错误。

    您能否检查您的 web.config 文件并将客户错误设置为开启?

    <customErrors="off" />
    

    【讨论】:

    • 嗨,我已经更新了解决方案,但这也帮助我找到了问题,谢谢。
    猜你喜欢
    • 2011-12-29
    • 2021-05-14
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    相关资源
    最近更新 更多