欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-10-21 21:49:55
开发工具:vs2010,mvc4.0,sqlserver2008 服务器:windows server 2012,iis8,sqlserver2012 一、发布后,每个...

开发工具:vs2010,mvc4.0,sqlserver2008

服务器:windows server 2012,iis8,sqlserver2012

一、发布后,每个页面第一次打开都很卡,50秒或更长,第二次打开就很快了

估计原因:编译速度慢,但在有vs环境的机器上发布没有这么卡

解决办法:

使用高版本的vs,“在发布期间预编译”; 使用iis8的application initialization功能 1. 使用vs2017“在发布期间预编译”

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

发布时遇到一个报错:

在应用程序级别之外使用注册为 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数据库。具体方法可在网上查询。

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。