XML学习笔记(三) --- 选取何种方式访问xml 及 文件写权限设定
.Net提供多种访问Xml的方式,以下是简单的选择标准
Reading XML
如果要读取和分析Xml文档中的数据,应当使用一种单向只读的方法,不需要像整个文档载入内存。在.Net框架中,可以使用XMLTextReader或者XMLValidatingReader。
Query XML
如果要查询XML文档中的特定信息,应当使用一种针对non-cached数据进行优化过的方法。在.Net框架中,可以使用XPathDocument对象。XPath(XML Path Language)是W3C推出的,专门用于对XML源进行定位的编程语言。
Transforming XML
如果要将一个XML文档转换成另一种格式,应当使用XSLT转换。在.Net框架中,可以使用XslTransform对象。
Random access style modification of XML Data in-memory
DOM方法适合做这样的操作。
如何解决IIS下(XML)文件写的权限问题
今天使用DOM写Xml文件时,遇到UnauthorizedAccessException的例外,后来用Google搜索后,发现原来这是一个最基本的安全问题。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaspnetwebapplicationsecurity.asp
仔细看系统错误提示就可以解决问题了:
“异常详细信息: System.UnauthorizedAccessException: 对路径“c:\ProjLog.txt”的访问被拒绝。
ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。
若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。”
这是一个很基本的安全问题。
你把你要访问的那个文件的安全页签中加入ASPNet和IUSR_MachineName这两个帐户,分别授予允许读写的权限,注意不光是这个文件,这个文件所有的文件夹的层次也要检查这两个帐户的权限。因为ASP.NET是通过这两个帐户来与windows沟通的。当<identity impersonate="true"/>时,才需要IUSR_MachineName这个帐户,反之,则不需要。
浙公网安备 33010602011771号