最近几个月发布程序比较多,遇到了各种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
validationKey="86B6275BA31D3D713E41388692FCA68F7D20269411345AA1C17A7386DACC9C46E7CE5F97F556F3CF0A07159659E2706B77731779D2DA4B53BC47BFFD4FD48A54"
decryptionKey="9421E53E196BB56DB11B9C25197A2AD470638EFBC604AC74CD29DBBCF79D6046"
validation="SHA1"
decryption="AES"
/>

MachineKey的使用方法:

将MachineKey添加至Web.config文件的<system.web></system.web>之间

MachineKey的作用:

  1. ASP.net 使用 forms authentication 时的 cookie 数据的加密和解密。以确保这部分数据不会被篡改
  2. viewstate 数据的加密和解密。以确保这部分数据不会被篡改。
  3. 使用进程外session(out-of-process session)时,对会话状态标识进行验证。

更多详细信息请参考:

http://msdn.microsoft.com/zh-cn/library/ms998288(en-us).aspx

按照这个方法实施后,发现还是不对。再找度娘,问题得解:http://www.iwms.net/td7397.aspx
 
 
上面就是问题解决过程,有好多不理解的地方,都是根据网上的办法逐一尝试的。后期还需要对IIS做更多的研究。

IIS发布web应用程序之再折腾的更多相关文章

  1. 转:OWASP发布Web应用程序的十大安全风险

    Open Web Application Security Project(OWASP)是世界范围内的非盈利组织,关注于提高软件的安全性.它们的使命是使应用软件更加安全,使企业和组织能够对应用安全风险 ...

  2. vs2012 发布web应用程序

    Visual Studio 2012 Visual Studio Express 2012 for Web 与 的Visual Studio 2010  Visual Studio Web发布更新 与 ...

  3. ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)

    Web程序如何发布部署呢.网站项目做好了,需要发布出来,提交给客户,装上服务器.那怎么在ASP.NET开发环境中将网站程序发布出来呢 ^_^   工具/原料 Visual Studio 2010  ( ...

  4. 发布Web应用程序时发生的“xx.aspx.cs文件不存在”错误

    (注意:这里说的Web应用程序并不是Web网站) 在VS里调试.IIS里浏览含.CS源码的项目都是没有问题的.但是发布后,所有的.CS文件都被编译到bin文件夹里去了.在IIS里浏览,发生“分析器错误 ...

  5. IIS发布MVC应用程序问题

    1.IIS7.5详细错误 HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效 重复定义了“system.web.extensi ...

  6. msbuild发布web应用程序

    aspnet_compiler.exe 只能编译 网站,web应用程序项目使用下面的命令即可. msbuild C:\Jenkins\jobs\KM_ERP_WEBAPP\workspace\KMWe ...

  7. ASP.NET MVC - 发布web应用程序、部署到IIS

    发布项目 右击项目 - 发布 选择IIS - 点击发布 发布方法 - 文件系统,目标位置 - 选择与项目所在目录不同的目录(也即,指定一个发布生成文件的目录),文件发布选项 - 不选 - 点击发布 安 ...

  8. 如何在Visual Studio 2012中发布Web应用程序时自动混淆Javascript

    同Java..NET实现的应用程序类似,Javascript编写的应用程序也面临一个同样的问题:源代码的保护.尽管对大多数Javascript应用公开源代码不算是很严重的问题,但是对于某些开发者来说, ...

  9. VS发布web应用程序报:无法识别的特性“xmlns:xdt”。请注意特性名称区分大小写 或 未能将文件obj\...复制到obj\...未能找到路径

    问题1:无法识别的特性“xmlns:xdt”.请注意特性名称区分大小写 问题2:未能将文件obj\...复制到obj\...未能找到路径 解决办法:将web项目文件下的obj文件夹从项目中排除,然后再 ...

随机推荐

  1. 使用gulp搭建less编译环境

    什么是less? 一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, Fi ...

  2. QString组合、拆分。

    1.组合字符常用arg()函数 QString test=QString("_haha_%1_hehe%2") .arg("ee").arg("aa& ...

  3. java_缓冲流(字节输出流)

    缓冲流分为: 字节缓冲流:BufferedIntputSream(字节缓冲输出流),BufferdOutputStream(字节缓冲输入流) 字符缓冲流:BufferedReader(字符输入缓冲流) ...

  4. .net Cache的用法

    HttpContext.Current.Cache 使用方法 .net Cache 怎么使用 /// <summary>        /// 简单创建/修改Cache,前提是这个值是字符 ...

  5. Python全栈开发:json与pickle

    #!/usr/bin/env python # -*- coding;utf-8 -*- """ 正解(序列化):将Python数据类型转换成json或者pickle格式 ...

  6. eclipse变量名自动补全

    对于编程人员来说,要记住大量的类名或类方法的名字,着实不是一件容易的事情.如果要IDE能够自动补全代码,那将为我们编程人员带来很大帮助. eclipse代码里面的代码提示功能默认是关闭的,只有输入“. ...

  7. Oracle使用语句块之循环插入数据

    1.业务要求:  将oracle表A的整表的数据一次性导入到表B中 , 以A_ID为外键关联. (*******如果开发环境和实际生产环境的数据一致,而且数据量比较小情况,可以直接手动添加数据; ** ...

  8. Ubuntu16.04安装pcl库

    sudo apt-get install libpcl-dev sudo apt-get install pcl-tools

  9. vue2.0 使用webpack搭建项目遇到的最搞笑的坑

    报错如下: 源码: 然后找了半天没搞明白... 无意中翻看了一下ES6语法规则.. 然后我发现:源代码最后一行要空一行,我心想这什么狗屁规定?MMP

  10. 杂项-公司:Axway

    ylbtech-杂项-公司:Axway Axway 公司是法国Sopra 集团从事应用系统集成(EAI/B2Bi)软件及相关咨询服务业务的全资子公司.Axway公司成立于1980年,总部位于美国凤凰城 ...