我有一个主题页面,主题在http模块中选择。
public void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
Page p = HttpContext.Current.Handler as Page;
if (p != null)
{
//get theme
string theme = GetTheme(HttpContext.Current.Request.Url.Host);
Debug.WriteLine(String.Format("Loading theme {0}", theme));
//set theme of page
p.Theme = theme;
}
}
public void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
Page p = HttpContext.Current.Handler as Page;
if (p != null)
{
//get theme
string theme = GetTheme(HttpContext.Current.Request.Url.Host);
Debug.WriteLine(String.Format("Loading theme {0}", theme));
//set theme of page
p.Theme = theme;
}
}
现在,当我请求elmah.axd时,抛出以下异常:
使用主题css文件需要页面上的标题控件。 (例如)。
当我禁用http主题模块时,一切都很好,并显示elmah.axd页面。我认为这是ErrorLogPage中的一个小错误。 ErrorLogPage应该处理一个主题可以给予页面或者应该忽略给定主题的事实。
现在我使用解决方法:
private const string ELMAH_ERROR_PAGE = "Elmah.ErrorLogPage";
if (p.GetType().FullName != ELMAH_ERROR_PAGE)
{
p.Theme = theme;
}
你有更好的想法或想法吗?
的Gr
马亭
荷兰
答案 0 :(得分:0)
之前已经解决了您的问题的解决方案:
Exclude certain pages from using a HTTPModule
您可以使用HTTPHandler 一个HTTPModule。处理程序让你 声明它们时指定路径 在Web.Config。
<add verb="*" path="/validate/*.aspx" type="Handler,Assembly"/>
如果您必须使用HTTPModule,那么 可以检查一下这条路 请求,如果它是一个 排除,绕过验证。