zoukankan      html  css  js  c++  java
  • 『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」
  • 相关阅读:
    Android中的IMEI
    《JAVA与模式》之适配器模式(转)
    海量日志数据__怎么在海量数据中找出重复次数最多的一个
    Java中的IO流系统详解(转载)
    获取网络文件长度问题
    内存泄漏
    Ubuntu12.04不能连接小米开发(转)
    Java/C++中数组的区别
    Android批量插入数据到SQLite数据库
    泛型编程 基础
  • 原文地址:https://www.cnblogs.com/sitemanager/p/2373586.html
Copyright © 2011-2022 走看看