开发工具: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="~/Account/Login" timeout="2880" />
</authentication>-->

2. 使用IIS8的Application Initialization功能

http://jingyan.baidu.com/article/c843ea0bb6c13877931e4a2e.html

二、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数据库。具体方法可在网上查询。


ASP.NET网站发布时的那些坑的更多相关文章

  1. asp.net 网站 发布时 去掉.cs文件

    VS2013在WIN8下扁平的UI和我今天锈垢的大脑,让找这个设置找了好半天!!!   OK,言归正传.   在要发布的网站上右键,选择"发布网站".   在发布窗口中,会让你选择 ...

  2. 关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法

    关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法 问题如下图所示,方法是去掉: <i ...

  3. 解决ASP.NET网站发布问题

    目录 前言 开始 aspx.cs文件放到单独的类库项目 一个可选择勾选页面的发布工具:LimusicAddin 前言 Asp.net 发布分为:动态编译和预编译.预编译又分为:In Place Pre ...

  4. asp.net 网站发布的步骤

    网站发布步骤: 这部分是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因. 如有冒犯请联系本人,或删除,或标明出处. 因为好的文章,以前只想收藏,但连接 ...

  5. Asp.net 网站发布之文件系统方式

    1.选中项目右键→发布方式选[文件系统]→点击发布 2.打开[Internet 信息服务(IIS)管理器] 默认网站(Default Web Site)→添加应用程序 填写[别名],[物理路径]选择上 ...

  6. asp.net网站发布

    1.iis里面新建一个网站,目录可以新建(例如:F:\dotNetWeb),还可以创建子文件夹如:F:\dotNetWeb\my,网站路径是可以自己设置的,也可以使用IIS默认的网站. 2.vs201 ...

  7. vs2017 asp.net 网站发布问题 (发布路径下含源码文件)

    使用vs2010版本,网站发布后会自动将源码发不为.dll程序集,但vs2017需要进行设置,其他版本没有试过. vs2017网站发布: 1. 2. 这里给一个你想用的名字,之后它会出现在你的程序文件 ...

  8. ASP.NET网站发布-允许更新此预编译站点 打勾与不打勾的区别

    发布网站时在打开的对话框中,有一个选项是至关重要的,那就是“允许更新此预编译站点”: “允许更新此预编译站点”这一项,默认情况下,前面是打上一个√的,至于要不要打上一个√,是可选的,那么,打勾与不打勾 ...

  9. vs2015网站发布时,设置页面合并后程序集的文件版本

    如何将web网站的页面合并成一个新的程序集发布,并设定文件版本? 这个问题我也纠结了很久,问了很多大牛,也没有找到解决方案 曾开了一贴,https://bbs.csdn.net/topics/3910 ...

随机推荐

  1. LeetCode——Longest Palindromic Subsequence

    1. Question Given a string s, find the longest palindromic subsequence's length in s. You may assume ...

  2. db2 函数、存储过程示例

    1.函数 --drop function getMaxDate; create FUNCTION getMaxDate (y int, m int ) returns date begin DECLA ...

  3. MySQL-性能优化-优化设计和设计原则

    MySQL性能优化目的如何合理的设计数据库?什么样的数据库设计才能给后期DBA优化提供基石? 数据库设计与程序设计的差异? 数据库设计早期优化1. 关系明确(理清表之间的关系,可以通过冗余的方式提高效 ...

  4. vue element new vue const

    new Vue{ el:"app", } ========= const app = new Vue({ router, data:{....} }).$mount('#app') ...

  5. poj2187凸包最远点对

    暴力过了 #include<map> #include<set> #include<cmath> #include<queue> #include< ...

  6. HDU-4355-三分

    Party All the Time Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  7. Python 脚本注册为Windows Service

    这部分内容就如同标题所讲的,其他的也不说了,直接上代码吧 需要说明的是,此代码在我的Win10 下可以正常使用,而在windows server 2008没有运行成功. 如果出现拒绝访问的错误,请使用 ...

  8. 应用Fiddler对手机应用来抓包

    Fiddler是一款非常流行并且实用的http抓包工具,它的原理是在本机开启了一个http的代理服务器,然后它会转发所有的http请求和响应,因此,它比一般的firebug或者是chrome自带的抓包 ...

  9. Maven 环境搭建及相应的配置

    在一般的Java Web项目开发中,特别是基于Struts + hibernate + spring的框架的时候,会有很多的jar包,一般都会在项目文件中有一个lib文件夹,下面放所有相关的jar包. ...

  10. 001——vue.js初始安装:

    windows下安装: 1.https://nodejs.org/en/  下载安装node.js. 在cmd窗口输入node -v检查node是否安装成功. npm也随着node安装了:npm -v ...