『C#基础』IIS的权限问题

提要:

IIS,互联网信息服务。我们在架设Asp.NET、WebServices等的时候会用到这个。主要是给网络中的其他用户提供网站或SOA服务的。

最近在使用WebServices的时候,遇到了「写入」权限的问题,所以查了一下资料,总结了一下。

 

正文:

根据MSDN中关于IIS权限的一个帖子,在IIS权限设置中,比较关键的有两方面的问题:

  1. 进程标识
  2. 用户访问权限

PS:在这两个方面上,不同版本的IIS,在设置上略有不同。由于我用的是6.0的,所以就只说6.0的。

6.0中,进程标识的配置:

  1. 依次单击“开始”、“设置”,然后单击“控制面板”
  2. 在“控制面板”中,双击“管理工具”
  3. 在“管理工具”中,双击“Internet 信息服务 (IIS) 管理器”
  4. 在 Internet 信息服务 (IIS) 管理器中,展开“<计算机名称> (本地计算机)”以及“网站”
  5. 右键单击该虚拟目录,然后单击“属性”
  6. 单击“<虚拟目录> 属性”对话框的“虚拟目录”选项卡。
  7. “应用程序池:”设置在此页的“应用程序设置”部分中。
  8. 在确定为 IIS 虚拟目录指定的应用程序池之后,单击“确定”
  9. 在 Internet 信息服务 (IIS) 管理器中,展开“应用程序池”,右键单击为虚拟目录指定的应用程序池,然后单击“属性”
  10. 单击“<应用程序池> 属性”对话框的“标识”选项卡以编辑与应用程序池关联的标识。

6.0中,支持的用户访问权限

  1. 匿名访问:允许用户建立匿名连接。IIS 服务器以指定的 Guest 帐户登录用户。这个方式的登陆是可以使用任意一个系统用户作为IIS的用户的,也就是说,可以是系统的超级管理员。所以在分配的时候,一定要注意!
  2. Windows 集成验证:与用户的 Web 浏览器进行加密交换以确认用户的标识。
  3. 摘要验证:仅用于 Active Directory 帐户,在网络中发送哈希值,而不是纯文本密码。摘要验证可通过代理服务器和其他防火墙工作,可以在 Web 分布式创作和版本管理 (WebDAV) 目录中使用。
  4. 基本验证:在网络中以纯文本、未加密的格式传输密码。
  5. .NET Passport 身份验证:Web 验证服务。

6.0中,虚拟目录用户访问权限的设置:

  1. 在 Internet 信息服务管理器中,展开“<计算机名称> (本地计算机)”和“网站”。
  2. 右键单击虚拟目录,然后单击“属性”。
  3. 单击虚拟目录“属性”对话框的“目录安全性”选项卡。
  4. 单击“身份验证和访问控制”下的“编辑”按钮。
  5. 启用一个或多个验证方法。

 

理论上说,只要给用户一个足够的权限,就可以对服务器进行相应的操作,包括对目录中的某个文件进行读写、增删,事实上,这也是可行的~

但是,这里有一个细节不得不说。在代码中,你是否给出了足够的路径来访问你想访问的目录!因为如果是在服务器中,实际的物理路径映射与我们在本地的环境是有很大的不同的。一般可以使用System.Web.HttpContext.Current.Server.MapPath(“…”)来获取服务器端的路径。而这里还有一个问题,如果我们使用的是在DLL中的方法,而不是服务或者ASPX项的时候,如何解决这个问题呢?在DLL中的方法是无法使用上面说的那一个方法的。

关于在服务器上DLL中的方法如何动态获取服务器本地路径:

  1. 最简单的一个解决方案,就是添加一个字符串参数,用于接收传入的服务器路径,这是一个规避的解决方法;
  2. 写死在某个固定的路径下,但是,一旦某个路径名改变一个,估计就悲剧了;
  3. 暂时没有找到更好的方法。

 

关于另一种获取路径的方法:AppDomain.CurrentDomain.SetupInformation.ApplicationBase

  1. 这种方法是针对应用程序域的,其获得的路径可能会存在与安装路径不同的情况。
  2. 具体的使用,要根据当前使用的应该程序域而定,而不是应用程序。
  3. 如果对其不是十分了解的话,慎用。

 

 

参考网摘:

  1. http://baike.baidu.com/view/850.htm   「IIS 百度百科」
  2. http://msdn.microsoft.com/zh-cn/library/aa954062(BTS.10).aspx   
  3. http://technet.microsoft.com/zh-cn/library/cc731798.aspx
  4. http://www.cnblogs.com/zzandlx/archive/2010/10/25/1860595.html 「关于应用程序池」
  5. http://msdn.microsoft.com/zh-cn/library/w124b5fa.aspx      「关于AppDomain」
posted @ 2012-02-29 15:59  莫不逢  阅读(1448)  评论(0编辑  收藏  举报