设为首页 收藏本站
查看: 1077|回复: 0

[经验分享] ASP.NET网站发布时的那些坑

[复制链接]
发表于 2017-12-28 18:44:29 | 显示全部楼层 |阅读模式
  开发工具:VS2010,MVC4.0,SQLSERVER2008
  服务器:Windows server 2012,IIS8,SQLSERVER2012
一、发布后,每个页面第一次打开都很卡,50秒或更长,第二次打开就很快了
  估计原因:编译速度慢,但在有VS环境的机器上发布没有这么卡
  解决办法:

  • 使用高版本的VS,“在发布期间预编译”;
  • 使用IIS8的Application Initialization功能
1. 使用VS2017“在发布期间预编译”
DSC0000.jpg DSC0001.jpg DSC0002.jpg DSC0003.jpg DSC0004.jpg DSC0005.jpg

  发布时遇到一个报错:
  在应用程序级别之外使用注册为 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>  

  StateServer模式的优点是独立于IIS进程,IIS应用程序的重启不影响会话数据。

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429072-1-1.html 上篇帖子: 通过TeamCity实现ASP.NET Core Web Application的自动编译及发布 下篇帖子: Jenkins~通过WebDeploy实现自动部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表