用WAST来远程管理ASP.NET的user和role
相信大家在开发ASP.NET程序的时候都使用过ASP.NET Configuration这个菜单。点击这个菜单时,Visual Studio将会启动一个WebServer,进而有一个叫做ASP.NET Web Admin Tool的页面将会帮助你管理整个ASP.NET程序的user和role。比如新建用户,删除用户,新建角色,分配角色等等。有了这个Tool,我们可以非常方便的在开发时来管理membership和role。然而,当ASP.NET程序Publish到IIS上后,你是用什么来进行管理的呢?许多人会用开发自己的模块来进行管理,也有些人也会使用一些开源的模块来进行管理。然而功能性和稳定性都可能比.NET自带的管理工具(WAST)要差。我们知道在开发时通过Visual Studio使用WAST,但不知道怎样能直接使用这个模块。这篇随笔将和大家一起探讨怎样把这个强大的功能据为己有 :)
首先介绍一些基本的东东,如果你很熟悉了,那么请直接跳过吧。
当你安装.NET Framework时,在"C:\Windows\Microsoft.NET\Framework\v2.0.50727"目录下会自动创建一个名为ASP.NETWebAdminFiles的文件夹,里面就包含了一个Website,用来管理membership和role。当你使用VS时,VS会启动一个新的WebServer,在WebServer中来启动这个Website。同时请注意,访问这个Website时需要附加两个query string - applicationPhysicalPath(application的物理路径)以及applicationUrl(application在IIS中的目录),如:
而且,WAST在默认情况下是不允许进行远程访问的。如:http://serverIP/blabla
好了,在介绍了一些关于WAST的注意点后,我们就可以在我们自己的ASP.NET程序中来使用它了。以下主要介绍两种情形:
1) 在IIS server上进行membership和role管理。
2) 在外网中进行访问。
第一种情形其实不难,只需要简单的两步:
1) 为了使用WAST,我们可以将其publish在default站点的一个application中,application指向WAST的原目录或copy后的目录。然后为了只能通过本地访问,我们将其设置为windows集成验证(需要disable匿名验证)。同时请注意,为WAST指定的application pool的identity需要有读写application数据库文件的权限,比如App_Data目录下的database file。否则便会有access denied的错误了。
2) 将我们的ASP.NET程序也publish在default站点的另一个application中,并在某页面中增加一个访问WAST的link,link的URL就是我们刚才给出的示例。或者你也可以直接在IE中使用那个link来访问。
现在我们便可以在本地IIS上使用WAST了。但是你仍然不能通过 http://serverIP/blabla 来进行远程访问。以上仅仅是从admin的角度在IIS server上来维护自己的站点。如果你需要从外部来访问WAST,你需要修改它的源码,使得我们可以通过 http://serverIP/blabla 来访问(修改之前请做好备份:))。
第二种情形:
1) 打开WAST的web.config文件,删除impersonate以及authorization的定义,并将Windows验证修改为Forms验证,因为我们需要从外部来访问了。
2) 打开WAST的App_Code文件夹下WebAdminPage.cs文件,Ctrl+F搜索到if (!application.Context.Request.IsLocal),并将其改为if (false)。
3) 将WAST部署在IIS的一个application中,并设置其为Forms验证。同时仍然需要注意,为WAST指定的application pool的identity需要有读写application数据库文件的权限,比如App_Data目录下的database file。否则便会有access denied的错误了。
4) 在IIS的另一个application中部署ASP.NET 程序。
5) 现在最主要的问题就是WAST没有身份验证,任何匿名用户都可以通过 http://serverIP/blabla 来访问。在Forms验证的程序下,解决这个问题不难,大家可以自己去尝试。
6) 现在可以去测试下是不是OK了。
Have a nice day!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述