使用 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 应用程序会创建新的应用程序池 的相关文章

  • Windows 身份验证在 IISExpress 中有效,但在 IIS 中无效

    我有一个奇怪的问题 我正在 Visual Studio 2013 中使用最新的 MVC5 我正在尝试创建一个托管匿名 API 的站点以及一个需要通过 Windows 身份验证的 Intranet 域凭据的管理仪表板 当通过 IIS Expr
  • Azure Web 部署“发布失败”

    各位开发人员大家好 我目前正在努力解决最新的 Visual Studio 2017 Professional 版本 15 8 1 中的问题 自从更新到版本 15 8 以来 我无法通过 Web 部署发布任何 Azure Functions 每
  • 尝试从 C# 服务查询 IIS 时出现异常

    我从使用 C 编写的 Windows 服务调用以下代码 try ServerManager m new ServerManager if m null SiteCollection sites m Sites I get exception
  • 重试 polly 单元测试(xunit 和 moq)

    我有 net core weabpi 参见下面的代码 我正在使用 polly 重试策略 请参阅下面的策略 我想对端点 getProducts 进行单元测试并测试 polly 重试 我已经发现这些例子 https github com App
  • AspNet vNext 上的 Kestrel 不提供 / 下的索引页面

    我需要能够在默认网址下提供我的 index html 使用 Kestrel Web 服务器 现在我只能使用完整路径访问我的静态文件 即 index html 同样 这在 VisualStudio 上完美运行 上下文是带有 Kestrel 的
  • .net core 2.0代理请求总是导致http 407(需要代理身份验证)

    我正在尝试通过 net core 2 0 Web 应用程序中的 WebProxy 发出 HTTP 请求 我得到的代码在 net框架中运行良好 所以我知道 相信 这不是环境问题 我也尝试使用两者来发出请求HttpWebRequest and
  • 严重: getRealPathFromConn 错误

    目前我正在调试我们的应用程序中一个看似随机的错误 我将尽力提供尽可能多的细节 基本上一段时间后 我们服务器上某个应用程序的应用程序池就会停止 我必须启动它 或者有时重新启动 Coldfusion 或更糟糕的是机器才能再次运行 服务器日志表明
  • MVC6 中的自定义选择性 404 页面

    我正在寻求帮助 我们可以在 ASP NET 5 MVC6 中拥有自定义 Error404 页面 我最接近的是使用 app UseStatusCodePagesWithReExecute Error 0 在 Startup cs 配置方法中
  • ASP.NET Core 过滤器内的 ViewBag

    基于这篇文章制作一个全局ViewBag https stackoverflow com questions 23381295 make a global viewbag 我正在尝试在 ASP NET Core 2 2 中实现以下内容 我意识
  • ASP.NET Core URL 重写

    我正在尝试将我的网站从 www 重定向到非 www 规则以及 http 到 https https example com https example com 在中间件中 我曾经在 web config 中进行这些重定向更改 例如
  • 如何生成 appsettings..json 文件?

    我有一个 ASP NET Core 2 WebAPI 它将部署在以下环境中 INT QA STAGE 生产环境 基于上述 我需要有appsettings
  • ASP.NET Core 会话超时

    我记得我们在 ASP NET 中使用了 session timeout 来更改会话超时 如果不更改 则为 20 分钟 我尝试在 Startup cs 中更改 ASP NET Core 3 1 中的会话超时 但没有任何反应 我对操作员使用身份
  • 尝试使用 boost.multi precision 编译项目时出现 C2143/C2518

    我在尝试让 boost multi precision 在我的 VC2017 项目中工作时遇到了问题 我试图使最简单的项目成为可能作为概念证明 include
  • 静态文件不通过 IIS 提供服务,而是通过 localhost 提供服务 - ASP.NET Core 3.1 MVC 和 C#

    我是编程新手 我能够自己解决大部分问题 但这个问题超出了我的想象 我正在使用 Visual Studio 在本地运行我的应用程序 当我在 VS 中单击 IIS Express 来运行该应用程序时 该应用程序将在带有 url 的浏览器中打开h
  • ASP.NET Core 授权权限访问文件夹与Identity Server

    在我的 ASP NET Core 项目中 我与 Identity Server 集成 因此 用户必须登录 Identity Server 然后才能访问该应用程序 设计部门给了我一些 HTML5 静态页面来发布 但只有经过身份验证的人或具有特
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • ASP.Net Core 内容配置附件/内联

    我正在从 WebAPI 控制器返回一个文件 Content Disposition 标头值自动设置为 附件 例如 处置 附件 文件名 30956 pdf 文件名 UTF 8 30956 pdf 当它设置为附件时 浏览器将要求保存文件而不是打
  • .Net Core 模拟无法与 Process.Start 一起使用

    在 Net Core 下使用模拟时 我似乎无法以其他用户身份启动进程 我在 Linqpad 中以 User1 身份运行此脚本 并尝试以 User2 身份启动程序 起初 模仿似乎有效 Console Writeline 当前用户的 s 从 U
  • 将命名空间添加到 ASP.NET MVC 6 中的所有视图

    我正在使用 MVC 6 并且希望能够从我的所有 Razor 视图全局访问特定的命名空间 在 MVC 5 中 这相当简单 我只需将以下代码添加到我的 views web config file
  • Asp.net core默认路由

    简化版Startup code public void ConfigureServices IServiceCollection services services AddMvc public void Configure IApplica

随机推荐

  • 如何为 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 身份 下保持稳定 而不是创建新的应用程序 这个设置在哪里会影响这个