微软ASP.NET站点部署指南(6):设置文件夹权限
来源:互联网 发布:交通事故数据2015年 编辑:程序博客网 时间:2024/05/04 12:05
1. 综述
当你使用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 Identities和Secure Content in IIS Through File System ACLs。
- 微软ASP.NET站点部署指南(6):设置文件夹权限
- 微软ASP.NET站点部署指南(1):部署介绍
- 微软ASP.NET站点部署指南
- 微软ASP.NET站点部署指南(2):部署SQL Server Compact数据库
- 微软ASP.NET站点部署指南(5):部署到IIS上作为测试环境
- 微软ASP.NET站点部署指南(7):生产环境部署
- 微软ASP.NET站点部署指南(8):部署Code-Only更新
- 微软ASP.NET站点部署指南(9):部署数据库更新
- 微软ASP.NET站点部署指南(5):部署到IIS上作为测试环境
- 微软ASP.NET站点部署指南(9):部署数据库更新
- 微软ASP.NET站点部署指南(8):部署Code-Only更新
- 微软ASP.NET站点部署指南(2):部署SQL Server Compact数据库
- 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transformations
- 微软ASP.NET站点部署指南(4):配置项目属性
- 微软ASP.NET站点部署指南(10):迁移至SQL Server
- 微软ASP.NET站点部署指南(10):迁移至SQL Server
- 微软ASP.NET站点部署指南(4):配置项目属性
- 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transformations
- android模拟器 内存只读错误
- 字符识别(模板匹配&BP神经网络训练)
- websphere 连接 DB2 错误
- 学Silverlight 2系列(23):Silverlight与HTML混合之无窗口模式
- 有关缓存,缓存算法,缓存框架:part 3
- 微软ASP.NET站点部署指南(6):设置文件夹权限
- 组织管理与系统工程
- 有关缓存,缓存算法,缓存框架:part 4
- 对ARM堆栈的理解
- Javascript闭包
- 学Silverlight 2系列(22):在Silverlight中用JavaScript调用.NET代码
- 有关缓存,缓存算法,缓存框架:part 5
- wince6.0 2450触摸屏问题
- having是分组后的where,是可以聚合的where。