2.0 中的 Webadmin.axd


Visual Studio 2005 Technical Articles,New Security Features in ASP.NET 2.0,Stephen Walther,Microsoft Corporation,June 2004
有多种导航到 Web 管理界面的方法。如果您要在 Visual Studio .NET 2005 内部生成 Web 应用程序,您可以通过从 Website 菜单下选择 ASP.NET Configuration 来打开 Web 站点管理工具。如果您要在 Visual Studio .NET 外部开发 Web 应用程序,您可以通过请求特殊的页 WebAdmin.axd 来直接导航到 Web 站点管理工具。例如,如果您的应用程序位于本地计算机上名为 MyWebApp 的虚拟目录中,则可以通过在 Web 浏览器中输入以下 URL,打开应用程序的 Web 站点管理工具。
您还可以使用这后一种方法来访问已部署的应用程序的 Web 站点管理工具。
在幕后,Web 站点管理工具由一组 ASP.NET 页组成,这些页使用下一节所讨论的标准 Login 控件。这些页位于 inetpub\wwwroot\aspnet_webadmin 文件夹中。如果由于某种原因,这些文件被从服务器中意外删除,您可以通过执行 aspnet_regiis 工具来自动重新安装它们。还可以使用 aspnet_regiis 工具来控制对 Web 站点管理工具的访问。例如,可以使用 aspnet_regiis 工具将对 Web 站点管理工具的访问权限制到本地服务器。

Webadmin.axd 在 2.0 中已经找不到了.
如果你现在想要编译你的站点,你只能在命令行中使用aspnet_compiler或者是 Visual Studio's菜单中的 Build->Publish command。另一个Webadmin.axd, 我想你应该忘记它。Web的站点管理工具现在只能从Visual Studio中访问。
Precompile.axd 和 Webadmin.axd 对于开发人员来说实在是非常方便的工具,但是对于IT Pro来说可能是一场噩梦。我想ASP.Net team已经认识到了这一点,做出了这个决定。

 Create a virtual directory ASP.NETWebAdminFiles in IIS that point to C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles

Open properties windows of the new virtual directory, make sure that it is configured to run with ASP.NET 2.0, and in Security tab, uncheck Anonymous Access, check Integrated Windows Authentication.

After that, you will be able to connect to WebAdminTools using the following syntax
in my case, it is:

Although I don't recommend to do it, if you want to access WebAdminTool from other computer, open WebAdminPage.cs from (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles\App_Code) and comment the following code block
            if (!application.Context.Request.IsLocal) {
                SecurityException securityException = new SecurityException((string)HttpContext.GetGlobalResourceObject("GlobalResources", "WebAdmin_ConfigurationIsLocalOnly"));
                WebAdminPage.SetCurrentException(application.Context, securityException);
WebAdminTool still be protected by Intergrated Windows Authentication, so you still some have some defense here.

One more cool tip for streamlining the webadmin - you can set the application path and application physical path programmatically by putting these lines:

Session["WebAdminPhysicalPath"] = @"C:\Inetput\wwwroot_yourwebsitepath";

Session["WebAdminApplicationPath"] = @"";

in the OnInit() function inside default.aspx. 

Or alternatively, you can create another form that authenticates the users, and sets these session values accordingly, and redirects.  You can impersonate a privileged windows user account for this application that has all the windows rights you need, and voila, you have forms based authentication.  Theres a few more things you should change to secure things properly going this route, but that should give you a good start.



posted @ 2007-10-08 11:30 emanlee 阅读(...) 评论(...) 编辑 收藏