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模式的优点是独立于IIS进程,IIS应用程序的重启不影响会话数据。

4. SQLServer模式

使用SQL Server来保存Session,即使IIS重启,Session仍然不会丢失。需要先创建ASPState数据库。具体方法可在网上查询。

时间: 2024-10-22 06:56:04

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

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

VS2013在WIN8下扁平的UI和我今天锈垢的大脑,让找这个设置找了好半天!!! OK,言归正传. 在要发布的网站上右键,选择"发布网站". 在发布窗口中,会让你选择一个发布配置文件,没有的话点击下拉菜单在里面选择新建一个. NEXT. 好,现在发布一下网站.发布出来的文件没有包含*.cs文件. 打开bin目录,会发现其中有一个名字为STAROCK_PAGES.dll文件,这就是之前根据设置生成的预编译文件. OK,就到这里吧,很简单,只是一开始真心没注意到那个下拉的设置!气人~ 收

asp.net网站发布

1.iis里面新建一个网站,目录可以新建(例如:F:\dotNetWeb),还可以创建子文件夹如:F:\dotNetWeb\my,网站路径是可以自己设置的,也可以使用IIS默认的网站. 2.vs2010  对应项目右键 ->发布网站, 1)如果是asp.net网站项目,直接设置"目标位置" . 2)如果是asp.net web应用程序,可以选择发布方法为“文件系统”,然后设置"目标文件" 3.  选择对应的.net framework版本 在访问过程中,如果出

asp.net 网站发布

asp.net 网站发布 1.安装并打开IIS. 2.用visual studio创建网站,目录为d:\website\website1 3.IIS中添加网站,网站名称必填.物理路径与已有的对应好.IP地址为本机IP. 4.启动网站后,浏览器输入 http://192.168.1.107:80  就可打开. 5.在vs解决方案目录中,对页面右键单击,选择"在浏览器中查看".此时vs作为调试用的web服务器,注意此时浏览器地址栏.与IIS开启与否无关. asp.net 网站发布

ASP.NE网站发布注意事项

ASP.NET网站部署到IIS中的关键点:1.Windows XP运行IIS的帐号为“计算机名\ASPNET”,Windows Vista.Windows Server 2003运行IIS的帐号为“NETWORK SERVICE”.如果网站下的某个文件夹供用户上传图片.文件,则运行IIS的帐号必须拥有对该文件夹的完全控制权限.对于Windows XP,首先要在Windows资源管理器中的“工具”菜单中选择“文件夹选项”命令,取消对“使用简单文件共享”的勾选.2.Windows XP下必须为运行I

asp.net 网站发布的步骤

网站发布步骤: 这部分是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因. 如有冒犯请联系本人,或删除,或标明出处. 因为好的文章,以前只想收藏,但连接有时候会失效,所以现在碰到好的直接转到自己这里. 原文 出处http://blog.sina.com.cn/s/blog_acb983ba0101c5um.html 1.打开你的VS2012网站项目,右键点击项目>菜单中 重新生成一下网站项目:再次点击右键>发布: 2.弹出网站发布设置面板,点击&

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

1.选中项目右键→发布方式选[文件系统]→点击发布 2.打开[Internet 信息服务(IIS)管理器] 默认网站(Default Web Site)→添加应用程序 填写[别名],[物理路径]选择上图中,目标位置 其他默认就可以, 3.选择你发布的网站,选[内容视图],找个页面右键[浏览] 总结一下,发布中有两步比较关键,也比较容易让人误解: 第一个:VS中右键项目发布时,发布方式选择[文件系统] 第二个:IIS管理器中选中默认网站右键[添加应用程序]

Microsoft Visual Studio网站发布时bin文件中没有调试文件,pdb文件

之所以要有调试文件,是因为方便快速定位到故障代码节点 下面来介绍如何实现调试文件一并发布到目录对应的bin文件中 在对应的网站获取后 编译 发布[找到需要发布的节点,PresentationLayer下面 ,选择后右击>属性>打包/发布 web 配置选择活动(Release) ,找到"排除生成的调试符号(G)"确认是否勾选 应该不要勾选,除去勾 然后再回到发布的节点,右击>发布>设置>"文件发布选项" 勾选"在发布前删除现有文

asp.net网站发布到服务器GET的技能

刚刚知道映射网络驱动器的作用(虽然才知道,但是我高兴) 把服务器上的硬盘或者其他电脑共享给你的盘映射到本地,就和操作本地硬盘一样. 双击计算机->映射网络驱动器->上面选择驱动器号 下面文件夹框里->写上服务器的地址\\....\E$ 最后加$的原因是 2.发布项目:发布的时候再vs项目中右键发布Web  目标位置就是刚才映射的服务器上的盘 3.在弄数据库这一块我发现了,服务器没有SQLserver2008.只有一个SQLserver的配置工具于是,我又知道了: 服务器只要一个数据库的配

Asp.Net网站的的编译与发布原理

如下所示创建一个简单的asp.Net Web应用程序 在VS中生成解决方案之后,可以在项目的目录下看到以下的文件: 当我们通过VS将网站发布出去之后,可以看到,最后生成的文件,如下图所示: 我们可以发现,发布之后的项目文件夹内少了很多文件,其实这是VS将aspx页面和一般处理程序以及Global文件等的后台文件都编译成了一个dll文件,这个dll文件存放在bin文件夹内: 对这个程序集进行反编译之后,可以看到我们写的后台代码都编译到这个dll文件中了 这个是一般处理程序的ProcessReque