当前位置: 首页 > 编程笔记 >

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

澹台俊材
2023-03-14
本文向大家介绍小心!ASP.NET网站发布时的那些坑,包括了小心!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功能

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

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

 类似资料:
  • 发布网站 你现在应该有一个在本地运行的网站。 一旦你将它定制为你喜欢样子,就是时候发布它了。 Docusaurus 生成一个静态 HTML 网站,准备好由您最喜爱的网络服务器或在线托管解决方案来提供服务。 构建静态 HTML 页面 要创建您的网站的静态版本,请在 website 的目录中运行以下脚本: yarn run build # 或 `npm run build` 这将在 website

  • 本文向大家介绍对新技术有那些了解,常去的网站有那些相关面试题,主要包含被问及对新技术有那些了解,常去的网站有那些时的应答技巧和注意事项,需要的朋友参考一下 node.js、angular.js、vue.js,reactjs,react-native,微信小程序 掘金、简书、github、csdn,知乎等

  • 互联网上的机器之间是怎么相互访问的? 你打开电脑就能相互访问吗?显然需要先接入互联网,也就是常说的“能上网”(插网线、连wifi),这样至少数据信号有途径传播。那么你怎么知道你要连到哪台电脑呢?通过IP地址(门牌号)。每一个接入互联网的电脑都会有一个ip地址,知道某个机器的ip地址就能通过网络协议连接它跟它通信了。 但对于我们来说有一个最大的问题,我们的电脑都是在局域网里的(办公网络、小区宽带都是

  • 网站是怎么工作的? 打开浏览器输入:www.lcsays.com试一下 这个过程就是:我们用浏览器访问了一个网站。那么到底浏览器和网站分别都做了什么呢?我们再来做一个试验 在试验之前我们要安装nc工具(nc是一个网络工具,通过nc命令可以模拟客户端或服务器端程序,非常方便) [root@centos7vm ~]# yum install nc 接着我们来尝试一下nc的网络功能,先打开一个终端输入

  • 我正在尝试使用Visual Studio 2015和. NET 4.5.1创建Web应用程序。当我发布网站时,Visual Studio会创建名为的文件夹。 我知道它是用来动态编译代码的,但不幸的是我的主机提供商不允许我在他们的服务器上执行编译器。 如何像以前版本的Visual Studio那样在没有的情况下发布网站? 编辑:我在尝试访问我的网站时遇到了这个错误。 似乎IIS试图执行< code>

  • 本文向大家介绍ASP.NET MVC5网站开发概述(一),包括了ASP.NET MVC5网站开发概述(一)的使用技巧和注意事项,需要的朋友参考一下 前段时间一直在用MVC4写个网站开发的demo,由于刚开始学所有的代码都写在一个项目中,越写越混乱,到后来有些代码自己都理不清了。正好看到别人在用MVC5写东西,喜新厌旧的我马上下载了Visual Studio 2013,幸好MVC4到MVC5变化不大