微软ASP.NET站点部署指南(6):设置文件夹权限

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 03:52 点击:

.  综述

当你使用Visual Studio的Visual Studio Development Server (Cassini)进行测试的时候,程序是运行在你的系统登陆账户授权之下的,一般情况都是用administrator账户,这样它就有了全部的权限来做任何事情了。但当程序运行在IIS上的时候,他的授权是该站点的应用程序池所设置的账户,默认情况下这种账户只有读取和执行的权限,而没用写权限。

 

程序一般都需要上传或更新文件的功能,这就成了问题,例如,在Contoso University程序里,系统出错的时候Elmah会在Elmah目录下创建XML格式的日志文件。 即便不使用像Elmah这样的工具,你的站点也可能需要让用户上传头像啥的。

 

本章节,我们测试结果是,刚开始之前写不了日志,设置写权限以后,再测试就可以正常写入文件了。

 

提醒:如果根据本章节所做的操作出现错误信息或一些功能不正常的话,请务必check Troubleshooting页面

2.  测试错误日志记录和报表功能

验证程序在IIS是否能正常工作(尽管在VS里是没问题的),你可以模拟的一个错误,然后打开Elmah错误日志,查看是否正确记录错误信息,如果没用正常创建XML日志的话,它将显示空的报告页面。

 

打开浏览器访问http://localhost/ContosoUniversity,输入一个非法的URL地址,这样系统就会产生一个黄页错误(因为Web.config里错误信息配置的是"RemoteOnly"而你是在本机IIS上运行,所以不是显示自定义页面GenericErrorPage.aspx):

 

\

现在打开Elmah.axd来查看错误报告,使用管理员账户("admin"/ "Pas$w0rd")登录以后,你将看到一个空记录的页面:

 

\

没用任何错误报告,那是因为Elmah没用在Elmah文件夹成功创建XML日志文件。

3.  设置Elmah目录的写权限

设置文件夹权限,你可以手工设置,也可以通过部署流程里自动化设置。使用自动化设置的话需要十分复杂的MSBuild代码,鉴于这个事情只是在第一次部署的时候做,所以本章节只是展示如果手工来赋权限。(关于自动化设置权限的信息,你可以访问:Setting Folder Permissions on Web Publish。)

 

打开资源管理器,找到你程序部署的目录C:\inetpub\wwwroot\ContosoUniversity,右键Elmah文件夹,选择属性-安装选项卡:

 

\

(如果在组或用户名Group or user names看不到DefaultAppPool,你可能需要在你的机器上为IIS和ASP.NET4设置一个账户,本章节你要找的账户就是Contoso University程序所用的应用程序池用到的账户,然后添加进来并赋予写权限。关于应用程序池认证的信息,可以查看页面底部的连接。)

点击编辑Edit,在Permissions for Elmah对话框里选择DefaultAppPool,然后在允许列(Allow)选择Write check box。

 

\

点击确认关闭对话框。

4.  重新测试错误日志记录和报表功能

用同样的方式(访问非法URL地址)模拟一个错误,然后打开错误日志页面,这时候可以发现错误日志已经显示在页面上了。

\

像SQL Compact 数据库更新一样,也需要App_Data文件夹的写权限,不过,因为部署流程会自动给App_Data设置写权限,所以我们不需要手工去做额外的工作了。

 

现在,你已经完成了在本机IIS上运行Contoso University 程序所需要的必要工作了。下一章节我们将把程序部署到主机提供商的生产环境上,让程序可以公开访问。

5.  更多信息

这个例子里,Elmah不能保存日志的原因很容易发现,可以通过跟踪IIS就能知道。具体信息请查看:Troubleshooting Failed Requests Using Tracing in IIS 7

 

如果给应用程序池身份赋权,请访问:Application Pool IdentitiesSecure Content in IIS Through File System ACLs

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • asp.net 设置GridView的选中行的实现代码
    • C#高级编程:数据库连接[1]
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET GridView列表代码示例
    • Asp.net MVC源码分析--Action Filter的链式调用
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1