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="~/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网站发布时的那些坑的更多相关文章
- asp.net 网站 发布时 去掉.cs文件
VS2013在WIN8下扁平的UI和我今天锈垢的大脑,让找这个设置找了好半天!!! OK,言归正传. 在要发布的网站上右键,选择"发布网站". 在发布窗口中,会让你选择 ...
- 关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法
关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法 问题如下图所示,方法是去掉: <i ...
- 解决ASP.NET网站发布问题
目录 前言 开始 aspx.cs文件放到单独的类库项目 一个可选择勾选页面的发布工具:LimusicAddin 前言 Asp.net 发布分为:动态编译和预编译.预编译又分为:In Place Pre ...
- asp.net 网站发布的步骤
网站发布步骤: 这部分是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因. 如有冒犯请联系本人,或删除,或标明出处. 因为好的文章,以前只想收藏,但连接 ...
- Asp.net 网站发布之文件系统方式
1.选中项目右键→发布方式选[文件系统]→点击发布 2.打开[Internet 信息服务(IIS)管理器] 默认网站(Default Web Site)→添加应用程序 填写[别名],[物理路径]选择上 ...
- asp.net网站发布
1.iis里面新建一个网站,目录可以新建(例如:F:\dotNetWeb),还可以创建子文件夹如:F:\dotNetWeb\my,网站路径是可以自己设置的,也可以使用IIS默认的网站. 2.vs201 ...
- vs2017 asp.net 网站发布问题 (发布路径下含源码文件)
使用vs2010版本,网站发布后会自动将源码发不为.dll程序集,但vs2017需要进行设置,其他版本没有试过. vs2017网站发布: 1. 2. 这里给一个你想用的名字,之后它会出现在你的程序文件 ...
- ASP.NET网站发布-允许更新此预编译站点 打勾与不打勾的区别
发布网站时在打开的对话框中,有一个选项是至关重要的,那就是“允许更新此预编译站点”: “允许更新此预编译站点”这一项,默认情况下,前面是打上一个√的,至于要不要打上一个√,是可选的,那么,打勾与不打勾 ...
- vs2015网站发布时,设置页面合并后程序集的文件版本
如何将web网站的页面合并成一个新的程序集发布,并设定文件版本? 这个问题我也纠结了很久,问了很多大牛,也没有找到解决方案 曾开了一贴,https://bbs.csdn.net/topics/3910 ...
随机推荐
- AccessTokens
https://www.oauth.com/oauth2-servers/access-tokens/ Access tokens are the thing that applications us ...
- ELK 6.x 部署
Elasticsearch版本:6.3.2 Kibana版本:6.3.2 1.es安装 按照官方提示操作即可. 通过yum安装或者下载tar包解压. 安装完成之后,需要修改一些配置 ①修改文件 /et ...
- C和C#两种方式实现邮件的简单发送
内容为通过两种方式发送邮件--1.C语言发送邮件 2.C#发送邮件 一,C语言进行邮件的发送 C语言发送邮件的步骤的简单解析: 1.创建TCP连接 socket() 2.连接到邮箱服务器 ...
- php调用mysql存储过程游标
<?php $dbtype = 'mysql'; $host = 'localhost'; $dbname = 'test'; $dsn = "$dbtype:host=$host;d ...
- ios 下拉刷新开源框架 MJRefresh
gitHub 下载框架 搜索MJExampleViewController.h 下拉刷新 MJTableViewController 上拉刷新 MJTableViewController Collec ...
- Python在线教程(廖雪峰)
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000
- led,key通用IO的端口
1 注意通用IO端口, GPBCON 只能控制一个GPBDAT位(对应的位),而GPBUP可以使能GPBCON.
- 设计模式--装饰模式C++实现
装饰模式C++实现 1定义 动态地给一个对象添加一些额外的职责.就增加功能来说,装饰模式比生成子类更加灵活.可作为继承的替代 2类图 3实现 //构件 class Component { protec ...
- 记录selenium操作
# -*- coding: utf-8 -*- # coding:utf-8 必须在第一行才能支持中文注释 #!/usr/bin/python # android-build.py # Build a ...
- Element-UI 实现下拉树
组件调用 <template> <!-- 行模式 --> <el-form inline> <el-form-item label="inline ...