嗨,我有一个非常棒的问题要问。我正在使用http模块来进行访问权限。假设用户是'admin',然后他被授权查看页面.http模块将根据页面URL从数据库获取访问权限,此后http模块将确定是否允许用户访问。 / p>
以下是我的示例编码:
public void Init(HttpApplication context)
{
context.AcquireRequestState += new EventHandler(context_AcquireRequestState1);
}
void context_AcquireRequestState1(object sender, EventArgs e)
{
try
{
string requestUrl = application.Request.AppRelativeCurrentExecutionFilePath.ToString().Trim();
//return last string of .aspx
string requestAspx = requestUrl.Substring(requestUrl.LastIndexOf('/') + 1).Trim();
}
但httpmodule会运行几次。它无法正确获取网址。 例如,它可能第一次得到〜/ Module / Admin / Role / RoleManagementList.aspx。 然后第二次会得到错误的网址〜/ favicon.ico.Can任何人都可以帮我解决这个问题?非常感谢你
答案 0 :(得分:0)
你没有得到“错误”的网址。用户的浏览器只是对不同的资源发出不同的请求。你的http模块将针对每个http请求执行,这意味着除了“页面”之外的每个资源都有一个,例如favicons(显示在浏览器网址中,有时候请求即使你没有)或图像,外部页面上引用的.css,外部.js文件等(除非它们直接由IIS绕过ASP.NET堆栈提供)。您需要在模块中考虑所有这些网址。
根据您控制部署环境的严密程度,您也可以/通过让IIS直接为其提供服务,从而免除每个命中asp.net的某些文件扩展名。见http://msdn.microsoft.com/en-us/library/ms972953.aspx