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会像上面的消息一样将其转换为最终用户,忽略我的自定义错误消息。

我用"helloworld"SOAP端点做了另一个例子:

[WebMethod]
public string HelloWorld()
{
HttpContext.Current.Response.StatusCode = 401;
return "Hello world";
}

在我的本地IIS中,我得到了HTTP 401"Hello world",但当我将其部署到Azure时,我得到的是相同的"Yout not have permissions…">

?我如何禁用/避免/躲避Azure 401消息转换并返回我自己的自定义错误消息(SOAP FAULT(

注意:我已经尝试在Azure应用程序服务中禁用身份验证,启用"允许匿名请求"等。

解决方案

问题出现在IIS中。将以下行添加到我的web.config中是有效的。

<httpErrors existingResponse="PassThrough" />

更多信息:https://stackoverflow.com/a/47307706/3763467

我会为其他面临相同问题的人保留相同的标题/标签,并认为问题出在Azure中。

听起来你的web.config文件可能被设置为打开了自定义错误。

你能检查你的web.config文件并将客户错误设置为on吗?

<customErrors="off" />

最新更新