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

ASP.NET第一次访问慢的完美解决方案(MVC,Web Api)

惠凯歌
2023-03-14
本文向大家介绍ASP.NET第一次访问慢的完美解决方案(MVC,Web Api),包括了ASP.NET第一次访问慢的完美解决方案(MVC,Web Api)的使用技巧和注意事项,需要的朋友参考一下

问题现象

访问asp.net web项目的时候,第一次访问比较慢,当闲置一段时间后,再次访问还是会非常慢。

问题原因

这是IIS回收造成的,再次访问的时候会初始化操作,初始化需要耗费时间,所以访问会比较慢,第二次访问的时候不需要初始化操作,因此变快了。

解决办法

IIS应用初始化会在网站第一次创建后或者对应网站的应用程序池回收后,自动开启新程序池,并启动网站初始化,模拟一次正常请求,使网站一直处于在线状态。

修改IIS中的配置

1.修改启用应用程序池(AlwaysRunning):保证应用程序池在第一次创建或者被回收后,能自动再次重启运行。


2.修改闲置超时1740分钟:长时间没有请求释放资源,可以不用修改


3.修改启用网站程序预加载(true):保证程序池在启动过后,网站能响应预加载动作。


我看有些博客会将进程模型/闲置超时设置为0或者很长,觉得不太好。闲置超时是指如果你的应用程序未处理请求也未接受请求,则进入闲置状态,这个状态可以保持的时间,超过这个时间,则该进程将会从内存中删除并释放所有内容。如果设置为0,则不会闲置一直持续不好,如果代码中有内存泄漏,则会一直持续,完全占用服务器。设置时间过长,长时间没有请求,还占用这内存,有点浪费。按照以上修改之后,基本上都会秒启动。这样的修改同样也适用于MVC,web api等IIS项目

IIS8以前的项目的第一次访问ASP.NET应用会很慢

以前的程序有可能有这个问题,现在的基本上没有了,因为从Windows 8开始,不再要求必须对CSP进行签名。
Microsoft Authenticode:Microsoft Authenticode旨在帮助用户确保谁实际创建了他们正在运行的代码,特别是对于在Internet上下载或运行的代码,并验证代码在发布后未被更改或篡改。例如,经过数字签名,恶意篡改然后在线重新分发的程序将在运行之前向用户显示警告。

问题现象

ASP.NET页面第一次访问的时候很慢,时间可以持续几十秒到几分钟

问题原因

当程序里面需要调用到一些Authenticode Signed的.NET Assembly的时候,它需要连接到外网来验证数字证书。当服务器是无法连接到外网时,这个校验证书的过程需要等到timeout之后才会结束。

解决办法

这个解决方案是由微软APAC技术支持中心 Internet Developer Support Team提供 https://blogs.msdn.microsoft.com/asiatech_zh-cn/2011/04/24/asp-net/)
请同时在以下两个aspnet.config文件中加入以下内容。

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet.config

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet.config

<?xml version="1.0" encoding="utf-8"?>

<configuration>
  <runtime>
      <generatePublisherEvidence enabled="false"/>
  </runtime>
</configuration>

修改以下注册表键值并重起IIS服务,打开注册表regedit,找到以下地址,修改State为00023e00,原先的是00023c00
[HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing]
"State"=dword:00023e00

然后记得重启一下应用程序池

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。

 类似资料:
  • 本文向大家介绍ASP.NET网站第一次访问慢的解决方法,包括了ASP.NET网站第一次访问慢的解决方法的使用技巧和注意事项,需要的朋友参考一下 本篇经验以IIS8,Windows Server 2012R2做为案例。 IIS8 运行在Windows Server 2012 and Windows 8 版本以上的平台上。 IIS中应用程序池和网站是单独存在的,但是网站运行必须建立在对应的应用程序池启

  • 本文向大家介绍Webpack打包慢问题的完美解决方法,包括了Webpack打包慢问题的完美解决方法的使用技巧和注意事项,需要的朋友参考一下 前言 这几天写腾讯实习生 Mini 项目的时候用上了 React 全家桶,当然同时引入了 Webpack 作为打包工具。但是开发过程中遇到一个很棘手的问题就是,React 加上 React-Router、superagent、eventproxy 这些第三方轮

  • 本文向大家介绍Ajax跨域的完美解决方案,包括了Ajax跨域的完美解决方案的使用技巧和注意事项,需要的朋友参考一下 公司要做一个活动页面,在其过程中发现所有的接口,ajax请求跨域。这里对跨域做个简单介绍以及提供几种解决办法。   由于浏览器实现的同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,所以AJAX是不允许跨域的。这里提供自己常用的三种方法: 1、j

  • 我在Spring Boot MVC 2.1项目中使用WebClient,发现客户端发出的第一个请求需要6秒。后续请求的速度要快得多(~30ms)。 在Spring的JIRA中有一个封闭的问题,建议使用Jetty作为WebClient Http连接器。我已经尝试了这种方法,改进了数字,第一个请求约为800ms。这次是一个改进,但它仍然远离RestTemplate,它通常采取 Netty 方法(5 秒

  • 我在MS VS 2013 Pro中从本地主机运行一个ASP.NET MVC应用程序(在调试模式下)。应用程序连接到远程数据库。

  • 本文向大家介绍WordPress网站访问慢解决方案细图文教程,包括了WordPress网站访问慢解决方案细图文教程的使用技巧和注意事项,需要的朋友参考一下 前言 之前自己搭建一个WordPress个人网站:https://zhanghan.xin;最近发现访问比较慢,于是乎进行了排查,下面是优化的方案。 优化前: 加载耗时:21秒+ 优化后: 加载耗时:250毫秒 优化后访问速度提升84倍+ 解决