我有一个具有基本身份验证的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" />