小心!ASP.NET网站发布时的那些坑
开发工具VS2010,MVC4.0,SQLSERVER2008
服务器Windows server 2012,IIS8,SQLSERVER2012
一、发布后,每个页面第一次打开都很卡,50秒或更长,第二次打开就很快了
估计原因编译速度慢,但在有VS环境的机器上发布没有这么卡
解决办法
使用高版本的VS,“在发布期间预编译”; 使用IIS8的Application Initialization功能 1. 使用VS2017“在发布期间预编译”
发布时遇到一个报错
在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的。如果在 IIS 中没有将虚拟目录配置为应用程序,则可能导致此错误。
解决办法发布时注释web.config中的以下代码
<!--<authentication mode="Forms"> <forms loginUrl="~/Aount/Login" timeout="2880" /> </authentication>-->
2. 使用IIS8的Application Initialization功能
二、ASP.NET session 频繁丢失问题
问题现象登录后30秒左右会话丢失,需要重新登录。
解决办法ASP.NET有几种会话状态模式,默认为“InProc模式”,改为“StateServer模式”,问题解除。
1. off模式
即关闭Session。
全站关闭Session可在Web.Config文件中的<system.web>节中写入
<sessionState mode="off">
要在某个页面上关闭Session,可在页面上添加
<%@ Page EnableSessionState="false" %>
2. InProc模式(缺省模式)
如果未在Web.config文件中配置SessionState Mode,默认即是InProc模式。
如果要定制InProc模式的参数,需要写入Web.config文件,例如
<sessionState mode="InProc" cookieless="false" timeout="20" />
cookieless设置是否允许不使用Cookie,timeout设置超时时间,单位为分钟。
InProc模式依赖于 ASP.NET进程, 当IIS进程崩溃或者重启时,保存在进程中的会话状态会丢失。
3. StateServer模式
StateServer模式是将会话数据存储到单独的内存缓冲区中,由一个Windows服务“ASP.NET State Service ”(需要在windows服务中开启)来控制这个缓冲区,需要设置stateConnectionString
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="20" />
使用StateServer模式时,所有需要保存在Session中的类,都要加上可序列化的特性
[Serializable]
public class SomeClass { }
StateServer模式的优点是独立于IIS进程,IIS应用程序的重启不影响会话数据。
4. SQLServer模式
使用SQL Server来保存Session,即使IIS重启,Session仍然不会丢失。需要先创建ASPState数据库。具体方法可在网上查询。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程