小心!ASP.NET网站发布时的那些坑

发布时间 - 2026-01-11 00:32:13    点击率:

开发工具: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功能

ASP.NET网站第一次访问慢的解决方法

二、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  # session丢失  # asp.net页面打开都很卡  # 详解VS2012发布网站步骤  # VS2010发布Web网站技术攻略  # 安装IIS发布我的第一个网站图文教程  # MVC4 网站发布(整理+部分问题收集和解决方案)  # ASP.NET网站的创建与发布过程简析  # IIS7 网站发布常见报错问题解决方案汇总  # ASP.NE网站发布注意事项简析  # ASP.NET MVC3网站创建与发布(1)  # .NET发布网站详细步骤  # VS2012/VS2013本地发布网站步骤详解  # 可在  # 重启  # 解决办法  # 应用程序  # 都要  # 但在  # 要在  # 都很  # 几种  # 即是  # 报错  # 则可  # 解决方法  # 全站  # 开发工具  # 更长  # 速度慢  # 大家多多  # 区中  # 默认为 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 高防服务器租用指南:配置选择与快速部署攻略  如何做网站制作流程,*游戏网站怎么搭建?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何用VPS主机快速搭建个人网站?  如何在阿里云虚拟主机上快速搭建个人网站?  如何注册花生壳免费域名并搭建个人网站?  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  详解jQuery中基本的动画方法  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  Python3.6正式版新特性预览  如何用JavaScript实现文本编辑器_光标和选区怎么处理  Linux安全能力提升路径_长期防护思维说明【指导】  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  如何基于PHP生成高效IDC网络公司建站源码?  Laravel怎么实现模型属性的自动加密  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  桂林网站制作公司有哪些,桂林马拉松怎么报名?  油猴 教程,油猴搜脚本为什么会网页无法显示?  Java类加载基本过程详细介绍  Python文件操作最佳实践_稳定性说明【指导】  Angular 表单中正确绑定输入值以确保提交与验证正常工作  利用vue写todolist单页应用  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  高防服务器租用首荐平台,企业级优惠套餐快速部署  Laravel API资源类怎么用_Laravel API Resource数据转换  EditPlus中的正则表达式 实战(2)  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  C++时间戳转换成日期时间的步骤和示例代码  如何生成腾讯云建站专用兑换码?  如何撰写建站申请书?关键要点有哪些?  在Oracle关闭情况下如何修改spfile的参数  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  长沙企业网站制作哪家好,长沙水业集团官方网站?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  非常酷的网站设计制作软件,酷培ai教育官方网站?  如何用西部建站助手快速创建专业网站?  创业网站制作流程,创业网站可靠吗?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  如何快速搭建个人网站并优化SEO?  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  魔方云NAT建站如何实现端口转发?