关于部署asp.net2.0项目遇到的问题
将网站编译发布后,将生成的网站目录复制到目标机器,服务器是windows2003,安装好.net2.0版的framework和languagepack之后,配置好IIS,访问时出现如下错误:
服务器应用程序不可用
您试图在此 Web 服务器上访问的 Web 应用程序当前不可用。请点击 Web 浏览器中的“刷新”按钮重试您的请求。
管理员注意事项: 详述此特定请求失败原因的错误信息可在 Web 服务器的系统事件日志中找到。请检查此日志项以查明导致该错误发生的原因。
查看系统日志,里面有两条错误:
1.未能初始化 AppDomain:/LM/W3SVC/1635210705/Root
Exception: System.IO.FileLoadException
Message: 未能加载文件或程序集“System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。拒绝访问。
StackTrace: 在 System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
在 System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
在 System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
在 System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark)
在 System.Activator.CreateInstance(String assemblyName, String typeName)
在 System.AppDomain.CreateInstance(String assemblyName, String typeName)
在 System.AppDomain.CreateInstance(String assemblyName, String typeName)
在 System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters)
在 System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(String appId, IApplicationHost appHost, HostingEnvironmentParameters hostingParameters)
2.由于无法创建应用程序域,因此未能执行请求。错误: 0x80070005 拒绝访问。
不知道是何原因,如果有知道的朋友请告诉我,不胜感谢!
问题点数:20、回复次数:8Top
1 楼realqingquan(清泉)回复于 2006-03-08 23:06:56 得分 0
安装2.0之后,在IIS的虚拟目录的属性设置中会多出一个ASP.NET标签,在那里边把运行时调整为2.0,默认使用的是1.1的运行时。
估计是这个情况。Top
2 楼csxbbb(xiaoxiao)回复于 2006-03-08 23:15:19 得分 0
脚本映射已设置为asp.net2.0了的,这个没问题Top
3 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2006-03-08 23:21:45 得分 20
这个是权限问题,
首先检查应用程序池的属性,看看它是以什么用户身份运行的,一般是NETWORK SERVICE
然后确保这个用户对.NET Framework 2.0的目录有访问权限,事实上应该是有的。目录是systemroot:\Windows\Microsoft.NET\Frameworks\2.0.xxxx
如果以上两条都对,很不幸,你遇到了一个很奇怪的问题,我上次是把应用程序池的用户身份改成本地系统来运行的。Top
4 楼csxbbb(xiaoxiao)回复于 2006-03-08 23:25:19 得分 0
是的,以上两条都是对的!
Top
5 楼csxbbb(xiaoxiao)回复于 2006-03-08 23:28:37 得分 0
lvony():
我试了你说的方法,以本地身份来运行就可以了,不过这样的话就存在很大的安全隐患了:(
Top
6 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2006-03-08 23:32:43 得分 0
我也在头疼这事儿……弄不清是哪里的Bug……Top
7 楼Ivony(授人以鱼不如授人以渔,上海谋生)回复于 2006-03-08 23:34:02 得分 0
其实说到安全隐患,NETWORK SERVICE的权限也蛮大的……Top
8 楼realqingquan(清泉)回复于 2006-03-08 23:38:46 得分 0
不用担心权限的问题,大所数系统都需要设置成本地系统才行,
最简单的例子:一个网络硬盘都需要设置为本地系统,更别说别的了。
不用头痛,你听说过因为设置为本地系统,而造成黑客侵入的吗?
中国有这个能力的人不多。要是遇到真正的黑客,你再怎么搞也是不安全不是。Top




