IIS发布web应用程序之再折腾
最近几个月发布程序比较多,遇到了各种IIS发布web程序后无法访问的问题。原以为对各种问题都已经摸的差不多了,但今天又为一问题折腾了大半天。具体过程祥记如下:
在server2008 R2 64位系统上发布web应用程序,应用程序池设置为:.net 4.0 经典模式,“启动32位应用程序”设置为true。这是跟据之前的经验,设置的,很多时候都管用。但今天跳出这样的错误:
根据以往经验,这个问题这么干就行了:
“原因:开发环境和部署环境不同造成的(系统64bit 和 系统32bit)
解决方法:IIS》应用程序池》选中所用的程序池名称右击》高级设置》常规》启用32位应用程序,改为True。”
现在刚上来就已经启动了32位应用程序,按道理不会出现这个错误才对;于是想到在VS中检查所有的类库和网站,看生成的目标平台是否都是X86(网站在生成的时候没法设置目标平台,这个问题一直没搞清楚);然后重新生成一遍,再发布,还是同样的问题。百思不解,尝试了很多遍;偶然发现之前发布成功的一个web应用程序配置的是不启用32位应用程序;
这样想到第二个方法,在VS中把所有目标平台设置为Any CPU,然后不启用32位应用程序,这时候出现下面的错误:
网上提供办法,生成<machineKey>,然后在web config中配置。引用博友“冬日阳光”的博客:
“
MachineKey生成方法
”
打开以下网址:http://www.aspnetresources.com/tools/keycreator.aspx
点击:Generated
生成的Machinekey:
MachineKey的使用方法:
将MachineKey添加至Web.config文件的<system.web></system.web>之间
MachineKey的作用:
- ASP.net 使用 forms authentication 时的 cookie 数据的加密和解密。以确保这部分数据不会被篡改
- viewstate 数据的加密和解密。以确保这部分数据不会被篡改。
- 使用进程外session(out-of-process session)时,对会话状态标识进行验证。
更多详细信息请参考:
http://msdn.microsoft.com/zh-cn/library/ms998288(en-us).aspx
按照这个方法实施后,发现还是不对。再找度娘,问题得解:http://www.iwms.net/td7397.aspx
上面就是问题解决过程,有好多不理解的地方,都是根据网上的办法逐一尝试的。后期还需要对IIS做更多的研究。