本文提供了 http://ASP.NET Core 的性能最佳实践指南。

译文原文地址:https://docs.microsoft.com/en-us/aspnet/core/performance/performance-best-practices?view=aspnetcore-3.1

积极利用缓存
这里有一篇文档在多个部分中讨论了如何积极利用缓存。 有关详细信息,请参阅︰ https://docs.microsoft.com/en-us/aspnet/core/performance/caching/response?view=aspnetcore-3.1.

了解代码中的热点路径
在本文档中, 代码热点路径 定义为频繁调用的代码路径以及执行时间的大部分时间。 代码热点路径通常限制应用程序的扩展和性能,并在本文档的多个部分中进行讨论。

避免阻塞式调用
http://ASP.NET Core 应用程序应设计为同时处理许多请求。 异步 API 可以使用一个小池线程通过非阻塞式调用来处理数以千计的并发请求。 线程可以处理另一个请求,而不是等待长时间运行的同步任务完成。

http://ASP.NET Core 应用程序中的常见性能问题通常是由于那些本可以异步调用但却采用阻塞时调用而导致的。 同步阻塞会调用导致 线程池饥饿 和响应时间降级。

不要:

通过调用 Task.Wait 或 Task.Result 来阻止异步执行。
在公共代码路径中加锁。 http://ASP.NET Core 应用程序应设计为并行运行代码,如此才能使得性能最佳。
调用 Task.Run 并立即 await 。 ASP.NET Core 本身已经是在线程池线程上运行应用程序代码了,因此这样调用 Task.Run 只会导致额外的不必要的线程池调度。 而且即使被调度的代码会阻止线程, Task.Run 也并不能避免这种情况,这样做没有意义。
要:

确保 代码热点路径 全部异步化。
如在进行调用数据读写、I/O 处理和长时间操作的 API 时,存在可用的异步 API。那么务必选择异步 API 。 但是,不要 使用 Task.Run 来包装同步 API 使其异步化。
确保 controller/Razor Page actions 异步化。 整个调用堆栈是异步的,就可以利用 async/await 模式的性能优势。
使用性能分析程序 ( 例如 PerfView) 可用于查找频繁添加到 线程池 的线程。 Microsoft-Windows-DotNETRuntime/ThreadPoolWorkerThread/Start 事件表示新线程被添加到线程池。
使用 IEumerable 或 IAsyncEnumerable 作为返回值
在 Action 中返回 IEumerable 将会被序列化器中进行同步迭代 。 结果是可能导致阻塞或者线程池饥饿。 想要要避免同步迭代集合,可以在返回迭代集合之前使用 ToListAsync 使其异步化。

从 http://ASP.NET Core 3.0 开始, IAsyncEnumerable 可以用作为 IEumerable 的替代方法,以异步方式进行迭代。 有关更多信息,请参阅 Controller Action 的返回值类型。

尽可能少的使用大对象
.NET Core 垃圾收集器 在 ASP.NET Core 应用程序中起到自动管理内存的分配和释放的作用。 自动垃圾回收通常意味着开发者不需要担心如何或何时释放内存。 但是,清除未引用的对象将会占用 CPU 时间,因此开发者应最小化 代码热点路径 中的分配的对象。 垃圾回收在大对象上代价特大 (> 85 K 字节) 。 大对象存储在 large object heap 上,需要 full (generation 2) garbage collection 来清理。 与 generation 0 和 generation 1 不同,generation 2 需要临时暂挂应用程序。 故而频繁分配和取消分配大型对象会导致性能耗损。

建议 :

要 考虑缓存频繁使用的大对象。 缓存大对象可防止昂贵的分配开销。
要使用 ArrayPool 作为池化缓冲区以保存大型数组。
不要 在代码热点路径 上分配许多短生命周期的大对象。
可以通过查看 PerfView 中的垃圾回收 (GC) 统计信息来诊断并检查内存问题,其中包括:

垃圾回收挂起时间。
垃圾回收中耗用的处理器时间百分比。
有多少垃圾回收发生在 generation 0, 1, 和 2.
有关更多信息,请参阅 垃圾回收和性能。

优化数据操作和 I/O
与数据存储器和其他远程服务的交互通常是 http://ASP.NET Core 应用程序最慢的部分。 高效读取和写入数据对于良好的性能至关重要。

建议 :

要 以异步方式调用所有数据访问 API 。
不要 读取不需要的数据。 编写查询时,仅返回当前 HTTP 请求所必需的数据。
要 考虑缓存从数据库或远程服务检索的频繁访问的数据 (如果稍微过时的数据是可接受的话) 。 根据具体的场景,可以使用 MemoryCache 或 DistributedCache。 有关更多信息,请参阅 https://docs.microsoft.com/en-us/aspnet/core/performance/caching/response?view=aspnetcore-3.1.
要 尽量减少网络往返。 能够单次调用完成就不应该多次调用来读取所需数据。
要 在 Entity Framework Core 访问数据以用作只读情况时, 使用 no-tracking 方式查询。 EF Core 可以更高效地返回 no-tracking 查询的结果。
要 使用过滤器和聚集 LINQ 查询 (例如, .Where, .Select 或 .Sum 语句) ,以便数据库执行过滤提高性能 。
要 考虑 EF Core 可能在客户端解析一些查询运算符,这可能导致查询执行效率低下。 有关更多信息,请参阅 客户端计算相关的性能问题。
不要 在集合上使用映射查询,这会导致执行 “N + 1” SQL 查询。 有关更多信息,请参阅 优化子查询。
请参阅 EF 高性能专题 以了解可能提高应用性能的方法:

DbContext 池
显式编译的查询
在代码提交之前,我们建议评估上述高性能方法的影响。 编译查询的额外复杂性可能无法一定确保性能提高。

可以通过使用 Application Insights 或使用分析工具查看访问数据所花费的时间来检测查询问题。 大多数数据库还提供有关频繁执行的查询的统计信息,这也可以作为重要参考。

通过 HttpClientFactory 建立 HTTP 连接池
虽然 HttpClient 实现了 IDisposable 接口,但它其实被设计为可以重复使用单个实例。 关闭 HttpClient 实例会使套接字在短时间内以 TIME_WAIT 状态打开。 如果经常创建和释放 HttpClient 对象,那么应用程序可能会耗尽可用套接字。 在 ASP.NET Core 2.1 中,引入了 HttpClientFactory 作为解决这个问题的办法。 它以池化 HTTP 连接的方式从而优化性能和可靠性。

建议 :

不要 直接创建和释放 HttpClient 实例。
要 使用 HttpClientFactory 来获取 HttpClient 实例。 有关更多信息,请参阅 使用 HttpClientFactory 以实现弹性 HTTP 请求。
确保公共代码路径快若鹰隼
如果你想要所有的代码都保持高速, 高频调用的代码路径就是优化的最关键路径。 优化措施包括:

考虑优化应用程序请求处理管道中的 Middleware ,尤其是在管道中排在更前面运行的 Middleware 。 这些组件对性能有很大影响。
考虑优化那些每个请求都要执行或每个请求多次执行的代码。 例如,自定义日志,身份认证与授权或 transient 服务的创建等等。
建议 :

不要 使用自定义 middleware 运行长时任务 。
要 使用性能分析工具 ( 如 Visual Studio Diagnostic Tools 或 PerfView) 来定位 代码热点路径。
在 HTTP 请求之外运行长时任务
对 http://ASP.NET Core 应用程序的大多数请求可以由调用服务的 controller 或页面模型处理,并返回 HTTP 响应。 对于涉及长时间运行的任务的某些请求,最好使整个请求 - 响应进程异步。

建议 :

不要把等待长时间运行的任务完成,作为普通 HTTP 请求处理的一部分。
要 考虑使用 后台服务 或 Azure Function 处理长时间运行的任务。 在应用外执行任务特别有利于 CPU 密集型任务的性能。
要 使用实时通信,如 SignalR,以异步方式与客户端通信。
缩小客户端资源
复杂的 http://ASP.NET Core 应用程序经常包含很有前端文件例如 JavaScript, CSS 或图片文件。 可以通过以下方法优化初始请求的性能:

打包,将多个文件合并为一个文件。
压缩,通过除去空格和注释来缩小文件大小。
建议 :

要 使用 http://ASP.NET Core 的 内置支持 用于打包和压缩客户端资源文件的组件。
要 考虑其他第三方工具,如 Webpack,用于复杂客户资产管理。
压缩 Http 响应
减少响应的大小通常会显着提高应用程序的响应性。 而减小内容大小的一种方法是压缩应用程序的响应。 有关更多信息,请参阅 响应压缩。

使用最新的 http://ASP.NET Core 发行版
http://ASP.NET Core 的每个新发行版都包含性能改进。 .NET Core 和 http://ASP.NET Core 中的优化意味着较新的版本通常优于较旧版本。 例如, .NET Core 2.1 添加了对预编译的正则表达式的支持,并从使用 Span 改进性能。 ASP.NET Core 2.2 添加了对 HTTP/2 的支持。 ASP.NET Core 3.0 增加了许多改进 ,以减少内存使用量并提高吞吐量。 如果性能是优先考虑的事情,那么请升级到 ASP.NET Core 的当前版本。

最小化异常
异常应该竟可能少。 相对于正常代码流程来说,抛出和捕获异常是缓慢的。 因此,不应使用异常来控制正常程序流。

建议 :

不要 使用抛出或捕获异常作为正常程序流的手段,特别是在 代码热点路径 中。
要 在应用程序中包含用于检测和处理导致异常的逻辑。
要 对意外的执行情况抛出或捕获异常。
应用程序诊断工具 (如 Application Insights) 可以帮助识别应用程序中可能影响性能的常见异常。

性能和可靠性
下文将提供常见性能提示和已知可靠性问题的解决方案。

避免在 HttpRequest/HttpResponse body 上同步读取或写入
http://ASP.NET Core 中的所有 I/O 都是异步的。 服务器实现了 Stream 接口,它同时具有同步和异步的方法重载。 应该首选异步方式以避免阻塞线程池线程。 阻塞线程会导致线程池饥饿。

不要使用如下操作: https://docs.microsoft.com/en-us/dotnet/api/System.IO.StreamReader.ReadToEnd。 它会阻止当前线程等待结果。 这是 sync over async 的示例。

public class BadStreamReaderController : Controller
{
[HttpGet("/contoso")]
public ActionResult Get()
{
var json = new StreamReader(Request.Body).ReadToEnd();

return JsonSerializer.Deserialize(json);
}
}

在上述代码中, Get 采用同步的方式将整个 HTTP 请求主体读取到内存中。 如果客户端上载数据很慢,那么应用程序就会出现看似异步实际同步的操作。 应用程序看似异步实际同步,因为 Kestrel 不 支持同步读取。

应该采用如下操作: https://docs.microsoft.com/en-us/dotnet/api/System.IO.StreamReader.ReadToEndAsync ,在读取时不阻塞线程。

public class GoodStreamReaderController : Controller
{
[HttpGet("/contoso")]
public async Task<ActionResult> Get()
{
var json = await new StreamReader(Request.Body).ReadToEndAsync();

return JsonSerializer.Deserialize(json);
}

}

上述代码异步将整个 HTTP request body 读取到内存中。

[!WARNING] 如果请求很大,那么将整个 HTTP request body 读取到内存中可能会导致内存不足 (OOM) 。 OOM 可导致应用奔溃。 有关更多信息,请参阅 避免将大型请求主体或响应主体读取到内存中。
应该采用如下操作: 使用不缓冲的方式完成 request body 操作:

public class GoodStreamReaderController : Controller
{
[HttpGet("/contoso")]
public async Task<ActionResult> Get()
{
return await JsonSerializer.DeserializeAsync(Request.Body);
}
}

上述代码采用异步方式将 request body 序列化为 C# 对象。

优先选用 Request.Form 的 ReadFormAsync
应该使用 HttpContext.Request.ReadFormAsync 而不是 HttpContext.Request.Form。 HttpContext.Request.Form 只能在以下场景用安全使用。

该表单已被 ReadFormAsync 调用,并且
数据已经被从 HttpContext.Request.Form 读取并缓存
不要使用如下操作: 例如以下方式使用 HttpContext.Request.Form。 HttpContext.Request.Form 使用了 sync over async ,这将导致线程饥饿.

public class BadReadController : Controller
{
[HttpPost("/form-body")]
public IActionResult Post()
{
var form = HttpContext.Request.Form;

Process(form[“id”], form[“name”]);

return Accepted();
}

应该使用如下操作: 使用 HttpContext.Request.ReadFormAsync 异步读取表单正文。

public class GoodReadController : Controller
{
[HttpPost("/form-body")]
public async Task Post()
{
var form = await HttpContext.Request.ReadFormAsync();

Process(form[“id”], form[“name”]);

return Accepted();
}

避免将大型 request body 或 response body 读取到内存中
在 .NET 中,大于 85 KB 的对象会被分配在大对象堆 (LOH )。 大型对象的开销较大,包含两方面:

分配大对象内存时需要对被分配的内存进行清空,这个操作成本较高。 CLR 会保证清空所有新分配的对象的内存。(将内存全部设置为 0)
LOH 只会在内存剩余不足时回收。 LOH 需要在 full garbage collection 或者 Gen2 collection 进行回收。
此 博文 很好描述了该问题:

当分配大对象时,它会被标记为 Gen 2 对象。 而不像是 Gen 0 那样的小对象。 这样的后果是,如果你在使用 LOH 时耗尽内存, GC 会清除整个托管堆,而不仅仅是 LOH 部分。 因此,它将清理 Gen 0, Gen 1 and Gen 2 (包括 LOH) 。 这称为 full garbage collection,是最耗时的垃圾回收。 对于很多应用,这是可以接受的。 但绝对不适用于高性能 Web 服务器,因为高性能 Web 服务器需要更多的内存用于处理常规 Web 请求 ( 从套接字读取,解压缩,解码 JSON 等等 )。
天真地将一个大型 request 或者 response body 存储到单个 byte[] 或 string 中:

这可能导致 LOH 的剩余空间快速耗尽。
因此产生的 full GC 可能会导致应用程序的性能问题。
使用同步 API 处理数据
例如使用仅支持同步读取和写入的序列化器 / 反序列化器时 ( 例如, JSON.NET):

将数据异步缓冲到内存中,然后将其传递到序列化器 / 反序列化器。
[!WARNING] 如果请求较大,那么可能导致内存不足 (OOM) 。 OOM 可导致应用奔溃。 有关更多信息,请参阅 避免将大型请求主体或响应主体读取到内存。
http://ASP.NET Core 3.0 默认情况下使用 https://docs.microsoft.com/en-us/dotnet/api/system.text.json 进行 JSON 序列化,这将带来如下好处。 https://docs.microsoft.com/en-us/dotnet/api/system.text.json:

异步读取和写入 JSON 。
针对 UTF-8 文本进行了优化。
通常比 Newtonsoft.Json 更高的性能。
不要将 IHttpContextAccessor.HttpContext 存储在字段中
IHttpContextAccessor.HttpContext 返回当前请求线程中的 HttpContext. IHttpContextAccessor.HttpContext** 不应该 ** 被存储在一个字段或变量中。

不要使用如下操作: 例如将 HttpContext 存储在字段中,然后在后续使用该字段。

public class MyBadType
{
private readonly HttpContext _context;
public MyBadType(IHttpContextAccessor accessor)
{
_context = accessor.HttpContext;
}

public void CheckAdmin()
{
if (!_context.User.IsInRole(“admin”))
{
throw new UnauthorizedAccessException(“The current user isn’t an admin”);
}
}
}

以上代码在构造函数中经常得到 Null 或不正确的 HttpContext。

应该采用如下操作:

在字段中保存 https://docs.microsoft.com/en-us/aspnet/core/Microsoft.AspNetCore.Http.IHttpContextAccessor?view=aspnetcore-3.1。
在恰当的时机获取并使用 HttpContext ,并检查是否为 null。

public class MyGoodType
{
private readonly IHttpContextAccessor _accessor;
public MyGoodType(IHttpContextAccessor accessor)
{
_accessor = accessor;
}

public void CheckAdmin()
{
var context = _accessor.HttpContext;
if (context != null && !context.User.IsInRole(“admin”))
{
throw new UnauthorizedAccessException(“The current user isn’t an admin”);
}
}
}

不要尝试在多线程下使用 HttpContext
HttpContext 不是 线程安全的。 从多个线程并行访问 HttpContext 可能会导致不符预期的行为,例如线程挂起,崩溃和数据损坏。

不要使用如下操作: 以下示例将发出三个并行请求,并在 HTTP 请求之前和之后记录传入的请求路径。 请求路径将被多个线程 (可能并行) 访问。

public class AsyncBadSearchController : Controller
{
[HttpGet("/search")]
public async Task Get(string query)
{
var query1 = SearchAsync(SearchEngine.Google, query);
var query2 = SearchAsync(SearchEngine.Bing, query);
var query3 = SearchAsync(SearchEngine.DuckDuckGo, query);

await Task.WhenAll(query1, query2, query3);

var results1 = await query1;
var results2 = await query2;
var results3 = await query3;

return SearchResults.Combine(results1, results2, results3);
}

private async Task SearchAsync(SearchEngine engine, string query)
{
var searchResults = _searchService.Empty();
try
{
_logger.LogInformation(“Starting search query from {path}.”,
HttpContext.Request.Path);
searchResults = _searchService.Search(engine, query);
_logger.LogInformation(“Finishing search query from {path}.”,
HttpContext.Request.Path);
}
catch (Exception ex)
{
_logger.LogError(ex, “Failed query from {path}”,
HttpContext.Request.Path);
}

return await searchResults;
}

应该这样操作: 以下示例在发出三个并行请求之前,从传入请求复制下文需要使用的数据。

public class AsyncGoodSearchController : Controller
{
[HttpGet("/search")]
public async Task Get(string query)
{
string path = HttpContext.Request.Path;
var query1 = SearchAsync(SearchEngine.Google, query,
path);
var query2 = SearchAsync(SearchEngine.Bing, query, path);
var query3 = SearchAsync(SearchEngine.DuckDuckGo, query, path);

await Task.WhenAll(query1, query2, query3);

var results1 = await query1;
var results2 = await query2;
var results3 = await query3;

return SearchResults.Combine(results1, results2, results3);
}

private async Task SearchAsync(SearchEngine engine, string query,
string path)
{
var searchResults = _searchService.Empty();
try
{
_logger.LogInformation(“Starting search query from {path}.”,
path);
searchResults = await _searchService.SearchAsync(engine, query);
_logger.LogInformation(“Finishing search query from {path}.”, path);
}
catch (Exception ex)
{
_logger.LogError(ex, “Failed query from {path}”, path);
}

return await searchResults;
}

请求处理完成后不要使用 HttpContext
HttpContext 只有在 ASP.NET Core 管道处理活跃的 HTTP 请求时才可用。 整个 ASP.NET Core 管道是由异步代理组成的调用链,用于处理每个请求。 当 Task 从调用链完成并返回时,HttpContext 就会被回收。

不要进行如下操作: 以下示例使用 async void ,这将使得 HTTP 请求在第一个 await 时处理完成,进而就会导致:

在 http://ASP.NET Core 应用程序中, 这是一个完全错误 的做法
在 HTTP 请求完成后访问 HttpResponse。
进程崩溃。

public class AsyncBadVoidController : Controller
{
[HttpGet("/async")]
public async void Get()
{
await Task.Delay(1000);

// The following line will crash the process because of writing after the
// response has completed on a background thread. Notice async void Get()

await Response.WriteAsync(“Hello World”);
}
}

应该进行如下操作: 以下示例将 Task 返回给框架,因此,在操作完成之前, HTTP 请求不会完成。

public class AsyncGoodTaskController : Controller
{
[HttpGet("/async")]
public async Task Get()
{
await Task.Delay(1000);

await Response.WriteAsync(“Hello World”);
}
}

不要在后台线程中使用 HttpContext
不要使用如下操作: 以下示例使用一个闭包从 Controller 属性读取 HttpContext。 这是一种错误做法,因为这将导致:

代码运行在 Http 请求作用域之外。
尝试读取错误的 HttpContext。

[HttpGet("/fire-and-forget-1")]
public IActionResult BadFireAndForget()
{
_ = Task.Run(async () =>
{
await Task.Delay(1000);

var path = HttpContext.Request.Path;
Log(path);
});

return Accepted();
}

应该采用如下操作:

在请求处理阶段将后台线程需要的数据全部进行复制。
不要使用 controller 的所有引用

[HttpGet("/fire-and-forget-3")]
public IActionResult GoodFireAndForget()
{
string path = HttpContext.Request.Path;
_ = Task.Run(async () =>
{
await Task.Delay(1000);

Log(path);
});

return Accepted();
}

后台任务最好采用托管服务进行操作。 有关更多信息,请参阅 采用托管服务运行后台任务 。

不要在后台线程获取注入到 controller 中的服务
不要采用如下做法: 以下示例使用闭包从 controller 获取 DbContext 进行操作。 这是一个错误的做法。 这将导致代码云在请求的作用域之外。 而 ContocoDbContext 是基于请求作用域的,因此这样将引发 ObjectDisposedException。

[HttpGet("/fire-and-forget-1")]
public IActionResult FireAndForget1([FromServices]ContosoDbContext context)
{
_ = Task.Run(async () =>
{
await Task.Delay(1000);

context.Contoso.Add(new Contoso());
await context.SaveChangesAsync();
});

return Accepted();
}

应该采用如下操作:

注入 https://docs.microsoft.com/en-us/aspnet/core/Microsoft.Extensions.DependencyInjection.IServiceScopeFactory?view=aspnetcore-3.1 ,并且在后台线程中创建新的作用域。 IServiceScopeFactory 是一个单例对象,所以这样没有问题。
在后台线程中创建新作用域注入依赖的服务。
不要引用 controller 的所有内容
不要从请求中读取 ContocoDbContext。

[HttpGet("/fire-and-forget-3")]
public IActionResult FireAndForget3([FromServices]IServiceScopeFactory
serviceScopeFactory)
{
_ = Task.Run(async () =>
{
await Task.Delay(1000);

using (var scope = serviceScopeFactory.CreateScope())
{
var context = scope.ServiceProvider.GetRequiredService();

context.Contoso.Add(new Contoso());

await context.SaveChangesAsync();
}
});

return Accepted();
}

以下高亮的的代码说明:

为后台操作创建新的作用域,并且从中获取需要的服务。
在正确的作用域中使用 ContocoDbContext,即只能在请求作用域中使用该对象。

[HttpGet("/fire-and-forget-3")]
public IActionResult FireAndForget3([FromServices]IServiceScopeFactory
serviceScopeFactory)
{
_ = Task.Run(async () =>
{
await Task.Delay(1000);

using (var scope = serviceScopeFactory.CreateScope())
{
var context = scope.ServiceProvider.GetRequiredService();

context.Contoso.Add(new Contoso());

await context.SaveChangesAsync();
}
});

return Accepted();
}

不要在响应正文已经开始发送时尝试修改 status code 或者 header
http://ASP.NET Core 不会缓冲 HTTP 响应正文。 当正文一旦开始发送:

Header 就会与正文的数据包一起发送到客户端。
此时就无法修改 header 了。
不要使用如下操作: 以下代码尝试在响应启动后添加响应头:

app.Use(async (context, next) =>
{
await next();

context.Response.Headers[“test”] = “test value”;
});

在上述的代码中,如果 next() 已经开始写入响应,则 context.Response.Headers[“test”] = “test value”; 将会抛出异常。

应该采用如下操作: 以下示例检查 HTTP 响应在修改 Header 之前是否已启动。

app.Use(async (context, next) =>
{
await next();

if (!context.Response.HasStarted)
{
context.Response.Headers[“test”] = “test value”;
}
});

应该采用如下操作: 以下示例使用 HttpResponse.OnStarting 来设置 Header,这样便可以在响应启动时将 Header 一次性写入到客户端。

通过这种方式,响应头将在响应开始时调用已注册的回调进行一次性写入。 如此这般便可以:

在恰当的时候进行响应头的修改或者覆盖。
不需要了解管道中的下一个 middleware 的行为。

app.Use(async (context, next) =>
{
context.Response.OnStarting(() =>
{
context.Response.Headers[“someheader”] = “somevalue”;
return Task.CompletedTask;
});

await next();
});

如果已开始写入响应主体,则请不要调用 next ()
仅当后续组件能够处理响应或时才调用它们,因此如果当前已经开始写入响应主体,后续操作就已经不再需要,并有可能引发异常情况。

托管于 IIS 应该使用 In-process 模式
使用 in-process 模式托管, http://ASP.NET Core 应用程序将与 IIS 工作进程在同一进程中运行。 In-process 模式拥有比 out-of-process 更加优秀的性能表现,因为这样不需要将请求通过回环网络适配器进行代理中转。 回环网络适配器是将本机发送的网络流量重新转回本机的的网络适配器。 IIS 进程管理由 Windows Process Activation Service (WAS) 来完成。

在 http://ASP.NET Core 3.0 和更高版本中的默认将采用 in-process 模式进行托管。

有关更多信息,请参阅 在 Windows 上使用 IIS 托管 ASP.NET Core

Newbe.Translations
您所阅读的当前文章源自于 Newbe.Translations 项目参与的翻译贡献,您可以通过右侧链接一同参与该项目:https://www.newbe.pro/Newbe.Translations/Newbe.Translations/。

翻译内容具有一定的时效性,不会随着原文内容实时更新,如果内容存在一定过时,您也可以联系我们。

本文作者: newbe36524
本文链接:https://www.newbe.pro/Newbe.Translations/001-ASP.NET-Core-Performance-Best-Practices/
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. leetcode第70题 爬楼梯 动态规划算法(DP):递归,滚动数组写法

    题干&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数 DFS算法 class Solution(object):def climbStairs(self, n):""":type…...

    2024/4/27 9:43:54
  2. sql小功能

    -- 解锁表 select sess.sid,sess.serial#, lo.oracle_username,lo.os_user_name, ao.object_name,lo.locked_mode from v$locked_object lo,dba_objects ao,v$session sess where ao.object_idlo.object_id and lo.session_idsess.sid; -- 解锁 alter system kill session 73,1…...

    2024/4/24 15:23:02
  3. mysql数值字符串类型的按照数值进行排序

    表结构&#xff1a; CREATE TABLE tmp (id int(11) NOT NULL,level varchar(10) NOT NULL,PRIMARY KEY (id) ) ENGINEMyISAM DEFAULT CHARSETutf8; 表数据&#xff1a; 根据level进行排序的sql&#xff1a; # sql1 SELECT * FROM tmp ORDER BY level DESC;# sql2 SELECT * F…...

    2024/4/24 15:23:00
  4. uview将时间固定到页面

    ...

    2024/4/24 15:22:59
  5. MyBatis之动态SQL

    MyBatis 的强大特性之一便是它的动态 SQL。ifchoose, when, otherwisetrim, where, setforeachbind多数据库支持动态 SQL 中的可插拔脚本语言if <select id"findActiveBlogLike"resultType"Blog">SELECT * FROM BLOG WHERE state ‘ACTIVE’<if…...

    2024/4/24 15:22:58
  6. 剑指微软 SQL Server,AWS 正式开源 Babelfish 数据库产品

    2020年12月2日&#xff0c;在亚马逊年度盛会上&#xff0c;AWS CEO Andy Jassy 宣布推出数据库迁移工具 Babelfish for Aurora PostgreSQL &#xff0c;同时表示将在2021年开源该项目。 时隔不到一年&#xff0c;AWS 信守承诺&#xff0c;于近日10月28日正式开源 Babelfish fo…...

    2024/4/24 15:42:47
  7. vs release设置可调试

    Release模式下调试需要设置&#xff1a; 1.项目上右键 -> 属性 2.c -> 常规 -〉调试信息格式 选 程序数据库(/Zi)或(/ZI), 注意&#xff1a;如果是库的话&#xff0c;只能(Zi) 3.c -> 优化 -〉优化 选 禁止&#xff08;/Od&#xff09; 4.链接器 -〉调…...

    2024/4/24 15:42:39
  8. 等比例适配移动端

    var width document.documentElement.clientWidth || document.body.clientWidth // 获取窗口大小 var ratio width / 375&#xff08;开发时的机型宽度&#xff09; // 计算比例 var fontSize 100 * ratio // 最后的大小 document.getElementsByTagName(html)[0].st…...

    2024/4/24 15:42:38
  9. 2021-2027中国工业级焦亚硫酸钠市场现状及未来发展趋势

    【报告篇幅】&#xff1a;115 【报告图表数】&#xff1a;163 【报告出版时间】&#xff1a;2021年1月 报告摘要 2019年中国工业级焦亚硫酸钠市场规模达到了XX亿元&#xff0c;预计2026年可以达到XX亿元&#xff0c;未来几年年复合增长率(CAGR)为XX%。 本报告研究中国市场工业…...

    2024/4/24 15:42:38
  10. 重返全球市场,荣耀手机能否取得更大荣耀?

    荣耀打响重返海外市场第一枪。 10月26日&#xff0c;荣耀50系列在欧洲、非洲等地区的多个国家上市发布。据官方透露&#xff0c;荣耀50系列11月还将会在法国、英国、德国、意大利、西班牙、白俄罗斯、沙特、埃及、伊拉克等国家陆续开售&#xff0c;未来将登陆海外40多个国家。…...

    2024/4/24 15:42:43
  11. 阿里一面三分钟就结束了,大厂的Java岗 面试为何越来越难?

    我们先来看看目前大厂的一些开放性问题 1、 写一段程序&#xff0c;让其运行时的表现为触发了5次Young GC、3次Full GC、然后3次Young GC&#xff1b; 2、 如果一个Java进程突然消失了&#xff0c;你会怎么去排查这种问题&#xff1f; 3、 给了一段Spring加载Bean的代码片段&am…...

    2024/4/24 15:42:37
  12. 树莓派上利用python+opencv+dlib实现嘴唇检测

    树莓派上利用pythonopencvdlib实现嘴唇检测树莓派上利用pythonopencvdlib实现嘴唇检测1、安装相关库文件1.1 安装opencv1.2 安装numpy1.3 安装dlib2、代码部分3、实验效果树莓派上利用pythonopencvdlib实现嘴唇检测 项目的目标是在树莓派上运行python代码以实现嘴唇检测&#…...

    2024/4/24 15:42:41
  13. Bootsrap,我爱你啥子嘛?

    面试的时候&#xff0c;经常会遇到面试官问”你知道哪些前端框架&#xff1f;就其中一种举例子说明它的优缺点。”很多人第一时间会想到Bootstrap这款基于Html、Css、Javascript的前端开源框架&#xff0c;优点是简洁灵活&#xff0c;使得Web开发更加快速、简单。缺点是…额&am…...

    2024/4/24 15:42:34
  14. 云原生:详解|K8s核心对象技术解析

    云世 公众号 续前篇&#xff1a;详解&#xff5c;K8s核心技术栈解析 K8s与虚拟机部署的区别、高可用部署的命令、对象如何定义、对象分组原则、Pod、service、deployment等核心对象工作流程、架构、原理解析 K8s应用的好处 假设你是一个开发人员&#xff0c;写了一个web服务…...

    2024/4/24 15:23:24
  15. 习题7-7 字符串替换 (15 分)

    本题要求编写程序&#xff0c;将给定字符串中的大写英文字母按以下对应规则替换&#xff1a; 原字母对应字母AZBYCXDW……XCYBZA 输入格式&#xff1a; 输入在一行中给出一个不超过80个字符、并以回车结束的字符串。 输出格式&#xff1a; 输出在一行中给出替换完成后的字符…...

    2024/4/26 6:15:54
  16. 解决2021版IDEA#{}连在一起的功能

    上图&#xff1a;...

    2024/4/24 15:23:17
  17. python中获取文件后缀名的方法

    获取文件的后缀名有好几种方法&#xff1a; 第一种&#xff1a;splittext()方法 os.path.splittext(path)[-1]第二种&#xff1a;endswith()方法 path "test_user_info.py" bool path.endswith(".py") print(bool)第三种&#xff1a;判断后缀名是否在…...

    2024/4/24 15:23:16
  18. CodeRunner插件:自定义编译参数

    在设置里找到Coderunner选项&#xff0c;然后找到executorMap 点击 在 settings.json 中编辑 &#xff0c;你将看到对不同语言的编译指令。 以下为本人设置&#xff0c;为Mac系统&#xff0c;指令有所不同&#xff0c;不过操作流程是一样的。 "code-runner.executorMap…...

    2024/4/24 15:23:12
  19. 监狱人员定位,新导定位系统在监狱的应用

    监狱作为在社会生活中比较特殊的区域&#xff0c;总是给外界的人一种神秘又可怖的感觉&#xff0c;实际上随着社会的进步和发展&#xff0c;监狱的管理也更加现代化科技化&#xff0c;而不是再依靠传统单一的狱警巡逻、监控摄像来管理犯人。 目前依靠数字化、网络化的视频监控…...

    2024/4/24 15:23:12
  20. 语音识别-音素的上下文建模

    人的发音其实是个渐变过程&#xff0c;在从一个音素转向另一个音素时&#xff0c;会存在协同发音现象&#xff0c;包括同一个音节内部和不同音节的过渡。 本博客主要看洪青阳教授写的《语音识别&#xff1a;原理与应用》而写的笔记。 协同发音 协同发音是指一个音受前后相邻…...

    2024/4/24 15:23:10

最新文章

  1. 终端安全管理措施有哪些?好用终端安全管理软件推荐(建议收藏)

    在当今数字化时代&#xff0c;信息安全已成为企业运营不可或缺的一部分。其中&#xff0c;终端安全为您详细介绍&#xff0c;并推荐几款好用的终端安全管理软件&#xff0c;帮助您更好地保护企业信息安全。管理是确保企业信息安全的重要环节。那么&#xff0c;终端安全管理措施…...

    2024/5/8 12:31:56
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. pyside6的QSpinBox自定义特性初步研究(二)

    当前的需求是&#xff0c;蓝色背景的画面&#xff0c;需要一个相对应色系的QSpinBox部件。已有的部件风格是这样的&#xff0c;需要新的部件与之般配。 首先新建一个QDoubleSpinBox&#xff0c;并定义其背景色和边框&#xff1a; QDoubleSpinBox { color: white; border:1px…...

    2024/4/30 6:11:48
  4. 腾讯云轻量服务器流量不够用了会怎么样?

    腾讯云轻量应用服务器是限制月流量的&#xff0c;如果当月流量不够用了&#xff0c;流量超额了怎么办&#xff1f;流量超额后&#xff0c;需要另外支付流量费&#xff0c;如果你的腾讯云账号余额&#xff0c;就会自动扣除对应的流量费&#xff0c;如果余额不足&#xff0c;轻量…...

    2024/5/8 8:45:36
  5. Linux——gdb

    gdb调试 (1)debug版本: 在编译阶段会加入某些调试信息; 调试信息是在编译的过程中加入到中间文件.o文件的; gcc -c main.c -g:生成包含调试信息的中间文件 gcc -o main main.o 一步执行:gcc -o main main.c -g (1) (2)release版本: 发行版本,没有调试信息; gcc默认生成relea…...

    2024/5/8 6:03:44
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57