我创建并注册了自定义http模块,以便在管理员通过配置更改打开维护模式后向用户显示维护消息。
当我传递html请求时,它应返回从文件加载的自定义html,但它会返回消息:" 服务不可用。"我无法在整个解决方案中找到该字符串。来自自定义维护模块的自定义日志消息将写入log4net日志。
... INFO DdiPlusWeb.Common.MaintenanceResponder - 维护模式已启用。请求被拒绝。 RequestUrl = ...
似乎在Azure上的IIS中配置了错过的内容。有些东西拦截了我的503响应。怎么解决?
模块代码
void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
if (AppConfig.Azure.IsMaintenance)
{
MaintenanceResponder responder = new MaintenanceResponder(context, MaintenaceHtmlFileName);
responder.Respond();
}
}
响应者代码的有趣部分。
private void SetMaintenanceResponse(string message = null)
{
_context.Response.Clear();
_context.Response.StatusCode = 503;
_context.Response.StatusDescription = "Maintenance";
if (string.IsNullOrEmpty(message))
{
_context.Response.Write("503, Site is under maintenance. Please try again a bit later.");
}
else
{
_context.Response.Write(message);
}
_context.Response.Flush();
_context.Response.End();
}
编辑:我骗了。抱歉。维护模块为期望json或html的请求返回相同的消息。