使用 VS2017 启动 asp.net core 应用程序会创建新的应用程序池

2024-04-07

每次当我在 VS2017 的本地 IIS 下启动 ASP.net Core 应用程序的调试器时,都会创建一个新的应用程序池。

我希望应用程序在 DefaultAppPool“身份”下保持稳定,而不是创建新的应用程序。

这个设置在哪里会影响这个?

我可以使用 IIS 管理控制台手动将其设置为旧值,但这很烦人。


您遇到的情况很可能是 .NET Core 2.2 中引入的新 InProcess 托管模型的副作用。检查 .csproj 文件中的这一行:

<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>

InProcess 托管仅允许每个应用程序池有一个 IIS 站点。如果不满足此条件,它将动态生成新的应用程序池。

您可以通过删除上面的行或将其更改为以下内容来返回旧的 Kestrel 托管:

<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>

In- 和 OutOfProcess 托管之间的差异也反映在 web.config 中,因此如果您想返回,可能也必须在那里进行更改。在system.webServer中查找aspNetCore节点:

        <aspNetCore 
            processPath="..." 
            arguments="..." 
            stdoutLogEnabled="false" 
            stdoutLogFile=".\logs\stdout"
            hostingModel="InProcess"
        >

同样,您可以删除 HostingModel 条目或将其值更改为“OutOfProcess”:

        <aspNetCore 
            ...
            hostingModel="OutOfProcess"
        >

可是等等!

您可能实际上想要重新考虑并采用新的 InProcess 模型,原因如下所述。

新的 InProcess 托管与旧的 Kestrel 托管

在 .NET Core 2.2 之前,IIS 上的所有 Core Web 应用程序都使用名为Kestrel。 Kestrel 轻量且速度快,但缺乏成熟 Web 服务器的许多功能。因此,IIS 被用作 Kestrel 前面的代理来添加所有更高的功能(如重定向、身份验证等)。正如您所想象的,级联两个 Web 服务器会降低整体性能并消耗额外的资源。

从 .NET Core 2.2 开始,还有另一种选择:进程内托管
如果激活进程内托管,IIS 将使用名为 IISHttpServer 的 IIS 进程内服务器实现。此实现以及核心应用程序本身与 IIS 工作进程在同一进程中运行。这减少了资源占用并提高了性能。
但有一个限制:ISS 中的每个 InProcess 托管站点都需要一个专用的应用程序池。您不能将同一个应用程序池用于配置为进程内托管的多个站点!
另请记住,这个独特的应用程序池需要对站点文件夹或应用程序读取和写入文件的任何其他文件夹具有读写访问权限。否则你会得到 503 错误。

基本进程内配置

InProcess 项目的 .csproj 中的典型 PropertyGroup 条目如下所示:

<PropertyGroup>
  <TargetFramework>netcoreapp2.2</TargetFramework>
  <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

您只需更改即可轻松地在新的 InProcess 和旧的 Kestrel 托管之间来回切换InProcess to OutOfProcess反之亦然。

更多信息

有关进程内托管的更多信息,请参阅:ASP.NET Core 托管模型 https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/index?view=aspnetcore-3.0#hosting-models
有关将现有 Core 项目迁移到 InProcess 托管的信息,请参阅:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 VS2017 启动 asp.net core 应用程序会创建新的应用程序池 的相关文章

  • 尚未注册类型“Microsoft.AspNetCore.Mvc...”的服务

    我正在尝试测试此控制器方法 以确保它重定向到另一个控制器方法或存在模型错误 public IActionResult ResetPassword ResetPasswordViewModel viewModel if viewModel N
  • 如何让“dnu”命令在 OS X 上运行?

    刚刚下载并安装视觉工作室代码 https code visualstudio com 在 OS X 10 10 3 上 我已经设法部分遵循ASP NET 5 安装说明 https code visualstudio com docs ASP
  • 不支持的媒体类型 ASP.NET Core Web API

    在前端 我使用 Angular 从表单收集一些数据并将其发送到我的服务器端控制器 如下图所示 我在控制器和服务上获取数据 scope newData 但是当它到达服务器时 我收到以下错误 不支持的媒体类型 并且我的 newData 为空 我
  • 从 Microsoft.AspNetCore.Http.HttpRequest 获取原始 URL

    The HttpRequestAsp Net 5 vNext 中的类包含 除其他外 有关请求 URL 的解析详细信息 例如Scheme Host Path etc 不过 我还没有发现任何地方可以公开原始请求 URL 只有这些解析值 在以前的
  • 如何跟踪长时间运行的 IIS 调用?

    我们的用户焦躁不安 他们不断抱怨一些模糊的 无法衡量的东西 特别是缓慢 但没有给出具体细节 这当然使得追踪变得非常困难 尽管如此 他们很可能是对的 有些服务器调用需要很长时间才能返回 所以我想在网站上放置某种嗅探器 我们在 IIS7 上使用
  • 编译 Windows 内核模式驱动程序 x64 时出现链接器错误

    我正在尝试编译此处找到的 sysvad 音频驱动程序示例 https github com Microsoft Windows driver samples tree master audio sysvad https github com
  • 忽略连接实体的全局查询过滤器

    全局查询过滤器在实现租户和软删除功能时非常方便 但我的问题是 例如 当我编写带有联接的查询时 dbContext entity1 Include entity2 entity3 entity4 Where something select
  • system.web.http.HttpError 的.Net 标准/核心版本

    从 net Framework 迁移到 net Standard Core 时 我遇到了 HttpError 类 除了兼容性垫片之外 我在 net core standard 中找不到任何等效项 这只是一个临时解决方案 不知道官方有没有替代
  • 使用signinmanager成功登录后,用户仍然显示为已注销?

    我已将 Asp Net 身份框架添加到从前端调用的 WebAPI 中 注册帐户后 并看到它在数据库中正确显示 我使用该用户的用户名和密码登录 结果成功 但根据登录管理器 用户未登录 我尝试使用 cookie 身份验证使用此示例 https
  • 致命:Jenkins IIS ID 无效

    我正在尝试设置 Jenkins 从 bitbucket 中提取并构建一个项目 我在 IIS 8 5 Server 2012 r2 上使用它 我已经设置了 Git 和 Bitbucket 插件 我已经建立了一个包含以下内容的项目 Branch
  • Net Core 错误名称“Ok”在当前上下文中不存在

    我收到以下错误 当前上下文中不存在名称 Ok 如何在我的控制器 API 中解决此问题 Return Ok 已嵌入控制器中 using System using System Collections Generic using System
  • .NET7 Web API 中的 JSON 多态序列化

    NET7 包括许多改进System Text Json序列化器 其中之一是使用新的类型的多态序列化 JsonPolymorphic 属性 我正在尝试在我的 Asp Net Web API 中使用它 但是尽管模型已正确设置 但它似乎并未序列化
  • 我们需要依赖注入的接口吗?

    我有一个 ASP NET Core 应用程序 该应用程序有一些帮助程序类可以完成一些工作 每个类都有不同的签名方法 我在网上看到很多 net core 示例 它们为每个类创建接口 然后向 DI 框架注册类型 例如 public interf
  • 在 ASP.NET Core 的中间件中注入服务

    我想根据 HTTP 标头值注入服务 所以我有 2 个类 DbDataProvider 和 InMemDataProvider 它们都是从 IDataProvider 实现的 每当进行 API 调用时 客户端都会传递一个标头 该标头确定是需要
  • ASP.NET Core/MVC 6 ViewModel 中的依赖注入 (DI)

    我使用构造函数注入在控制器中成功使用了 ASP NET 5 MVC 6 DI 我现在有一个场景 我希望我的视图模型在实现 IValidatableObject 时在 Validate 方法中使用服务 ViewModel 中的构造函数注入不起
  • 使用单元测试项目中定义的 Startup 类时.NET Core TestServer 返回 404

    我有一个基本的 net core api web 应用程序和一个使用 TestServer 发出 http 请求的单元测试项目 我有一个 TestStartup 类 它是 api 项目中 Startup 类的子类 如果 Startup 类位
  • 如何在解决方案根目录添加“src”文件夹

    这听起来像是一个愚蠢的问题 但 Visual Studio 似乎不允许我做这个我一直在 github 上看到的简单组织 我从新的空解决方案开始 然后我想添加一个 src 文件夹 其中将包含多个项目 如果我右键单击并选择 添加文件夹 VS 将
  • 无法在 Windows 8 上的 IIS 中提供 WCF 服务

    当我尝试在 Windows 8 计算机中的 IIS 上提供 WCF 服务时 出现众所周知的错误 由于扩展配置的原因 无法提供您请求的页面 如果页面是脚本 请添加处理程序 如果应下载该文件 请添加 MIME 映射 旧的解决方法是运行aspne
  • aspnetcore 出现角度错误 NodeInitationException:节点调用在 60000 毫秒后超时

    我在用着yo generator aspnetcore spa一旦我运行应用程序 我就遇到了问题 处理请求时发生未处理的异常 NodeIncationException 节点调用在 60000 毫秒后超时 您可以通过设置更改超时持续时间 N
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List

随机推荐

  • 如何为 TensorFlow 分类器创建特征列

    我有一个非常简单的 csv 文件中的二进制分类数据集 如下所示 feature1 feature2 label 1 0 1 0 1 0 哪里的 label 列表示类别 1 为正 0 为负 功能的数量实际上相当大 但这对于这个问题来说并不重要
  • 当多个基类具有同名成员函数时,如何解决函数调用歧义?

    我有一个与 C 多重继承相关的基本问题 如果我有如下所示的代码 struct base1 void start cout lt lt Inside base1 struct base2 void start cout lt lt Insid
  • 动态元素与强类型元素

    我是一名 Web 开发人员 目前正在使用 mvc3 razor 和Umbraco https en wikipedia org wiki Umbraco创建网络应用程序 我从事这项工作的时间不长 已经从使用动态元素转向使用强类型元素来遵循标
  • 使用现有绘图创建闪亮的下拉菜单

    我对 R 很陌生 所以这可能是非常明显的 但我真的被困住了 我已经创建了五个现有的绘图图表 我希望能够从下拉列表中选择闪亮的它们 我无法使现有图表名称和下拉列表之间的链接正常工作 我最近的尝试 不起作用 ui lt shinyUI flui
  • 删除百分比轴中的小数 - R [重复]

    这个问题在这里已经有答案了 我有一个图 我需要从百分比数字中删除小数 数据已经四舍五入 两位小数 数据示例 gt head df X 1 0 05 0 28 0 08 0 19 0 33 然后我用它来绘制它scale x continuou
  • Java 版本号的正则表达式

    我有一个正则表达式如下 d d d 它将字符串验证为 1 0 0 软件版本 我如何编辑它才能使以下字符串也有效 1 0 0 SNAPSHOT 1 0 0 RC 1 0 0 RELEASE 版本号后面可以跟有字母数字字符串 但前提是有 or
  • 更改循环位置时的 tJavaFlex 行为

    工作中遇到一些问题 我怀疑是因为对tJavaFlex缺乏了解 我在此测试作业中生成 10 行 并在 tJavaFlex 内生成循环 因此有 10 行进入 并且 开始 和 结束 部分中有一个循环 我预计每输入一行 都会生成 10 个相同的行
  • 如何使用我现有的 Web 项目实现数字签名

    我正在开发一个项目 用户需要对文档进行数字签名 我检查了谷歌并了解 sinadura 这是一个桌面应用程序 但我需要将其调用到我的网络应用程序中 我在 Linux 服务器上安装了 alfresco 社区版 https www alfresc
  • ViewPager PageTransformer 与支持库 v13

    我的应用程序使用Android的ViewPager和FragmentStatePagerAdapter 它只需要支持Android 4 x或更高版本 我正在为 ViewPager 使用 v13 支持库 所以我不需要处理 SupportFra
  • UITabBar 背景图像的图像缩放

    我在我的应用程序中创建了 UITabBarController Then in viewDidLoad 我想更改 UITabBar 背景图像 这是我试图使其工作的代码 class MainTabBarController UITabBarC
  • Angular 路由器:忽略路径参数中的斜杠

    我有动态路线could参数内包含斜杠或反斜杠 例如 http localhost 4200 dashboard T64 27D我应该导航到带有路线的页面T64 27D 这是我的导航方式this router navigate dashboa
  • 使用 React 前端和 Rails 后端的带有 google calendar api 的客户端 OAuth

    所以我试图做 google oauth 来为我的用户获取刷新令牌 实际上并没有使用 google oauth 来保存用户 当我使用客户端 OAuth 进行 google api 时 一切正常 但当您进行握手时 它们不提供刷新令牌 仅提供 a
  • Swift 不支持 SDK“iPhoneSimulator8.4.sdk”

    刚刚更新到 Xcode 7 0 1 在 El Capitan GM 上运行且禁用了 SIP 现在每次我尝试编译 Swift 项目时都会收到此错误
  • Lua:“拖动”数组中的元素序列

    我正在尝试创建一个函数 将连续数量的元素 拖动 到数组中的新位置 并限制为数组的当前大小 其他项目应该围绕 拖动 的项目晃动 例如 如果我的数组有 7 个元素 并且我想拖动中间的三个 1 2 3 4 5 6 7 lt keys a b C
  • 如何使用Watin / IE9测试文件下载?

    我正在尝试使用 Watin 2 1 0 针对 IE9 测试文件下载 我使用了问题已接受答案中的建议代码在 IE9 中使用 Watin 下载文件 https stackoverflow com questions 6125285 downlo
  • 在 Hadoop MapReduce 中解析 PDF 文件

    我必须在 Hadoop 的 MapReduce 程序中解析 HDFS 中的 PDF 文件 所以我从 HDFS 获取 PDF 文件为输入分割它必须被解析并发送到 Mapper 类 为了实现这个输入格式我已经经历过这个link http cod
  • 属性错误“模块”对象没有属性“DateField”

    我试图在 Satchmo Django 中扩展管理定义 并在尝试向 ProductOptions 添加 formfield override 时收到错误 属性错误 模块 对象没有属性 DateField from django contri
  • quartz 默认线程数是多少

    我是新来的Quartz 我确实设法弄清楚调度程序配置的默认值是org quartz threadPool threadCount 1 但它没有在任何地方找到这意味着什么 这是否意味着只有一个线程或者有其他 数字 我正在使用quartz sc
  • 如何使用蓝图将 Flasgger 与 Flask 应用程序结合使用?

    我正在使用以下命令将 Swagger UI 添加到我的 Python Flask 应用程序中Flasgger https github com rochacbruno flasgger 互联网上最常见的示例是使用基本 Flask 风格 ap
  • 使用 VS2017 启动 asp.net core 应用程序会创建新的应用程序池

    每次当我在 VS2017 的本地 IIS 下启动 ASP net Core 应用程序的调试器时 都会创建一个新的应用程序池 我希望应用程序在 DefaultAppPool 身份 下保持稳定 而不是创建新的应用程序 这个设置在哪里会影响这个