|
|
1
10
HttpModules是global.asax的替代品
(另见
https://www.codeguru.com/csharp/.net/net_asp/article.php/c19389/HTTP-Handlers-and-HTTP-Modules-in-ASPNET.htm
HttpModules在web.config中注册;这很方便, 是 可在目录级别进行自定义。因此,每个目录都可以有自己独特的模块集(在较低的目录中继承)。所有模块都具有与global.asax中相同的功能。 基本上,每个页面请求都会被传递 每个 在到达实际页面代码之前,先注册模块。无论请求类型如何,都会发生这种情况: "page.aspx" "page.html"
| |
( | module 1 | )
( | module 2 | )
( | module 3 | )
V V
(handler 1) (handler 2)
((更好的图片和描述可以在 https://www.codeguru.com/csharp/.net/net_asp/article.php/c19389/HTTP-Handlers-and-HTTP-Modules-in-ASPNET.htm ))
因此,您需要做的就是将代码定义为模块,而不是在global.asax中。如果用户未通过身份验证,则:
它比这复杂一点,所以可以在codeguru网站上找到更好的描述/教程。 |
|
|
2
1
我非常确定,一旦一个人登录,你的代码将允许所有人访问——可能不是你想要的。 根据 http://msdn.microsoft.com/en-us/library/ms178473.aspx : “当ASP.NET应用程序中的第一个资源(如页面)被请求时调用 应用程序_启动 方法是 只打过一次电话 在应用程序的生命周期内” 此外,根据 http://support.microsoft.com/kb/307598#1 应用程序状态变量实际上是每个ASP.NET应用程序的全局变量 我建议您使用内置的Membership API,并使用web.config文件限制访问。 如果您对使用Membership API而不是使用自己的身份验证机制持开放态度,则可以使用web.config检查用户是否已被授权使用特定文件夹。您还可以相对简单地让用户登录一个站点,并通过共享身份验证票证自动登录其他站点——前提是它们都在同一个根域上。 有关共享身份验证票证,请参阅: http://msdn.microsoft.com/en-us/library/ms998288.aspx 和 http://www.netomatix.com/development/singlesignon.aspx 关于如何使用web.config来限制访问: http://www.devhood.com/Tutorials/tutorial_details.aspx?tutorial_id=85 |
|
|
3
0
实际上,我相信每个asp.net应用程序只有一个global.asax。如果您希望example.com/subsite1与example.com/subite2是不同的应用程序,则可以在IIS中创建两个不同的应用。因此,它们将在完全不同的应用程序域中运行(尽管它们可能在同一个进程(aspnet_wp.exe或w3wp.exe)中,甚至共享应用程序池)。因此,如果它们是不同的应用程序,它们也应该有独立的global.asax文件。 将目录转换为应用程序。打开IIS->找到目录/子站点,右键单击->属性->“主目录”选项卡->单击“创建”。 有关应用程序域和工作进程的更多信息,请考虑 reading this blog entry 希望这能有所帮助。 |