首页 > 程序开发 > Web开发 > ASP.Net >

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

2011-11-28

. 综述当你使用Visual Studio的Visual Studio Development Server (Cassini)进行测试的时候,程序是运行在你的系统登陆账户授权之下的,一般情况都是用administrator账户,这样它就有了全部的权限来做任何...

. 综述

当你使用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

<script type=text/javascript> if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 101461; var cb_entryId = 2263111; var cb_blogApp = "TomXu"; var cb_blogUserGuid = "65b02d3c-5b0b-e111-b7b9-842b2b196315"; var cb_entryCreatedDate = '2011/11/28 12:29:00'; </script>

相关文章
最新文章
热点推荐