『C#基础』IIS的权限问题
提要:
IIS,互联网信息服务。我们在架设Asp.NET、WebServices等的时候会用到这个。主要是给网络中的其他用户提供网站或SOA服务的。
最近在使用WebServices的时候,遇到了「写入」权限的问题,所以查了一下资料,总结了一下。
正文:
根据MSDN中关于IIS权限的一个帖子,在IIS权限设置中,比较关键的有两方面的问题:
- 进程标识
- 用户访问权限
PS:在这两个方面上,不同版本的IIS,在设置上略有不同。由于我用的是6.0的,所以就只说6.0的。
6.0中,进程标识的配置:
- 依次单击“开始”、“设置”,然后单击“控制面板”。
- 在“控制面板”中,双击“管理工具”。
- 在“管理工具”中,双击“Internet 信息服务 (IIS) 管理器”。
- 在 Internet 信息服务 (IIS) 管理器中,展开“<计算机名称> (本地计算机)”以及“网站”。
- 右键单击该虚拟目录,然后单击“属性”。
- 单击“<虚拟目录> 属性”对话框的“虚拟目录”选项卡。
- “应用程序池:”设置在此页的“应用程序设置”部分中。
- 在确定为 IIS 虚拟目录指定的应用程序池之后,单击“确定”。
- 在 Internet 信息服务 (IIS) 管理器中,展开“应用程序池”,右键单击为虚拟目录指定的应用程序池,然后单击“属性”。
- 单击“<应用程序池> 属性”对话框的“标识”选项卡以编辑与应用程序池关联的标识。
6.0中,支持的用户访问权限:
- 匿名访问:允许用户建立匿名连接。IIS 服务器以指定的 Guest 帐户登录用户。这个方式的登陆是可以使用任意一个系统用户作为IIS的用户的,也就是说,可以是系统的超级管理员。所以在分配的时候,一定要注意!
- Windows 集成验证:与用户的 Web 浏览器进行加密交换以确认用户的标识。
- 摘要验证:仅用于 Active Directory 帐户,在网络中发送哈希值,而不是纯文本密码。摘要验证可通过代理服务器和其他防火墙工作,可以在 Web 分布式创作和版本管理 (WebDAV) 目录中使用。
- 基本验证:在网络中以纯文本、未加密的格式传输密码。
- .NET Passport 身份验证:Web 验证服务。
6.0中,虚拟目录用户访问权限的设置:
- 在 Internet 信息服务管理器中,展开“<计算机名称> (本地计算机)”和“网站”。
- 右键单击虚拟目录,然后单击“属性”。
- 单击虚拟目录“属性”对话框的“目录安全性”选项卡。
- 单击“身份验证和访问控制”下的“编辑”按钮。
- 启用一个或多个验证方法。
理论上说,只要给用户一个足够的权限,就可以对服务器进行相应的操作,包括对目录中的某个文件进行读写、增删,事实上,这也是可行的~
但是,这里有一个细节不得不说。在代码中,你是否给出了足够的路径来访问你想访问的目录!因为如果是在服务器中,实际的物理路径映射与我们在本地的环境是有很大的不同的。一般可以使用System.Web.HttpContext.Current.Server.MapPath(“…”)来获取服务器端的路径。而这里还有一个问题,如果我们使用的是在DLL中的方法,而不是服务或者ASPX项的时候,如何解决这个问题呢?在DLL中的方法是无法使用上面说的那一个方法的。
关于在服务器上DLL中的方法如何动态获取服务器本地路径:
- 最简单的一个解决方案,就是添加一个字符串参数,用于接收传入的服务器路径,这是一个规避的解决方法;
- 写死在某个固定的路径下,但是,一旦某个路径名改变一个,估计就悲剧了;
- 暂时没有找到更好的方法。
关于另一种获取路径的方法:AppDomain.CurrentDomain.SetupInformation.ApplicationBase
- 这种方法是针对应用程序域的,其获得的路径可能会存在与安装路径不同的情况。
- 具体的使用,要根据当前使用的应该程序域而定,而不是应用程序。
- 如果对其不是十分了解的话,慎用。
参考网摘:
- http://baike.baidu.com/view/850.htm 「IIS 百度百科」
- http://msdn.microsoft.com/zh-cn/library/aa954062(BTS.10).aspx
- http://technet.microsoft.com/zh-cn/library/cc731798.aspx
- http://www.cnblogs.com/zzandlx/archive/2010/10/25/1860595.html 「关于应用程序池」
- http://msdn.microsoft.com/zh-cn/library/w124b5fa.aspx 「关于AppDomain」
版权声明:
作者:莫不逢
出处:http://www.cnblogs.com/sitemanager/
Github:https://github.com/congjf
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。