gpt4 book ai didi

c# - 保持 IIS Express 在以 .NetCoreApp 为目标的 dotnet cli web 项目上运行

转载 作者:行者123 更新时间:2023-11-30 19:37:16 30 4
gpt4 key购买 nike

我在 Visual Studio 中有一个使用新的 xproj 扩展和 project.json 的 dotnet cli WebApp。

dotnet new --t web --lang c#

我有一个网站可以在 .NetCoreApp 上正常运行。但是,如果不根据 IIS 添加中间件,我就无法在 IIS 中加载站点,我宁愿不这样做。

所以我正在使用 IIS Express。

为此,我必须运行项目以使 IIS 运行才能在 Debug模式下使用该站点。

我想知道的是如何让 IIS Express 保持运行状态,而不是在我运行项目时附加到它。

我已阅读所有有关禁用“编辑并继续”的指南。这确实适用于 ASP.Net Web 应用程序,但这是一个 dotnet 核心 WebApp,并且不是相同的项目类型。它没有带有禁用“编辑并继续”选项的“属性”窗口,并且在 IDE 的“调试选项”中禁用“编辑并继续”无效。

当我停止运行项目时,IIS 关闭。

有什么想法吗?

可选地,我如何配置它以在不依赖它的情况下在 IIS 中本地运行,我能想到的最佳选择是使用条件编译。

最佳答案

我的问题的全部目的是能够让我的网站在不使用 Visual Studio 中的 f5 且不附加调试器的情况下运行。

事实证明,解决方案很简单。

您可以在控制台终端的 Kestrel 中运行它。

只需打开终端或命令提示符到您的项目根目录并键入:

dotnet run

这将针对您的项目运行 kestrel 并告诉您它在哪个端口上。然后你可以打http://localhost:5000 (或有端口)在您的浏览器中。

更新:您可以在整个应用程序中消除对 IIS Express 的依赖,并使 f5 在 Kestrel 中运行。

为此:

  1. 右键单击您的项目并转到属性
  2. 点击调试选项卡
  3. 点击个人资料下拉列表旁边的新建
  4. 称它为 Kestrel Dev
  5. 将启动类型更改为“项目”
  6. 将应用程序参数设置为“dotnet run”
  7. 为“ASPNETCORE_ENVIRONMENT”添加一个环境变量
  8. 将值设置为“发展”
  9. 为“ASPNETCORE_URLS”添加一个环境变量
    1. 给它一个值“http://localhost:8080”或您希望它运行的任何 url/端口。

为“Kestrel Production”重复上述选项,但将 ASPNETCORE_ENVIRONMENT 设置为“Production”

ASPNETCORE_ENVIRONMENT 用于处理您的 json 配置转换。

    public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();

Configuration = builder.Build();
}

那么如果您想要 appSettings.json 用于开发(本地)、暂存和生产,那么您将创建 3 个 appSettings.json 文件

appSettings.json 
appSettings.Development.json
appSettings.Staging.json
appSettings.Production.json

然后您使用选项将 .Staging.Json 等文件设置为可选:上面的 true 配置选项。

因此,在 appSettings.json 中,您拥有在所有环境中都相同的所有内容。

然后在 appSettings.Development.json 中,您可能拥有只在本地运行时才需要的东西。

等等等等

您为每个环境创建一个配置文件,这样如果您运行“Kestrel Development”,它会使用 appSettings.Development.Json

如果您运行“Kestrel Staging”,它会使用 appSettings.Staging.Json。

如果您运行“Kestrel Production”,它会使用 appSettings.Production.json。

这也会影响您的 tagHelper 在 MVC View 中的工作方式,例如

<environment names="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" />
</environment>
<environment names="Staging,Production">
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
<link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
</environment>

在该 html 中,如果您正在运行“Kestrel Development”,则会输出用于开发的环境标记内的 html。

如果您运行的是 Kestrel Production,则输出 staging,production 环境标签内的 html。

关于c# - 保持 IIS Express 在以 .NetCoreApp 为目标的 dotnet cli web 项目上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38648775/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com