【问题标题】:How to configure ASP.NET Core 1.0 to use Local IIS instead of IIS Express?如何配置 ASP.NET Core 1.0 以使用本地 IIS 而不是 IIS Express?
【发布时间】:2016-12-01 20:20:23
【问题描述】:

如何设置 .Net Core 1.0 项目以在调试时使用 Local IIS 而不是 IIS Express

我尝试过以各种方式修改 launchSettings.json 文件。例如,将所有出现的 IIS Express 替换为 Local IIS 并更新 applicationUrllaunchUrl 以使用我的自定义localhost http://sample.local(我已经更新了主机文件并配置了 IIS 管理器)但不高兴。

Properties/launchSettings.json文件的默认设置:

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:38601/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "SampleApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

【问题讨论】:

    标签: asp.net iis asp.net-core visual-studio-debugging


    【解决方案1】:

    您目前无法在开发时直接使用 IIS 来托管 ASP.NET Core 应用程序,因为开发文件夹未提供 IIS 需要托管的所有必要文件。这使得在 开发 环境中运行 ASP.NET Core 有点痛苦。

    正如this article by Rick Strahl 中所指出的,尝试这样做的理由并不多。 IIS 在运行 ASP.NET Core 应用程序时做的很少——事实上,您的应用程序不再直接在 IIS 进程中运行,而是在托管 Kestrel Web 服务器的完全独立的控制台应用程序中运行。因此,当您自行托管控制台应用程序时,您实际上是在基本相同的环境中运行。

    如果您确实需要发布您的应用程序,您可以使用dotnet 命令行或使用 Visual Studio 工具将其发布到本地文件夹。

    例如要发布到C:\output文件夹,可以使用如下命令:

    dotnet publish
      --framework netcoreapp1.0 
      --output "c:\temp\AlbumViewerWeb" 
      --configuration Release
    

    然后您可以将您的 IIS 站点指向输出文件夹。确保将应用程序池 CLR 版本设置为无托管代码,并且AspNetCoreModule 可用。

    更多详情请见https://docs.asp.net/en/latest/publishing/iis.html

    【讨论】:

    • 我不明白 Rick Strahl 的论点。例如,如果您正在开发带有 JS 前端的 .NET 后端,则需要让后端始终运行。我现在必须在每次进行更改时发布后端,或者在 Visual Studio 中打开我的后端项目并保持调试运行。而以前,我只会根据需要构建并通过 IIS 托管。现在是额外的一步,不是很好。
    • 这实际上是他在开发时使用IIS的论点。无需在开发中执行此操作,只需在开始 JS 前端工作之前使用 dotnet run 在 Kestrel 上直接运行即可。这样你就不需要打开解决方案,不需要发布,也不需要使用 IIS。
    • 在 .NET 的 pre-.NET core 版本中,您的应用可以由 IIS 托管,除非您特别需要进行更改,否则无需打开 Visual Studio。进行更改后,只需点击构建即可。使用 Kestrel,不仅需要构建,还需要在开始 JS 前端开发之前发布或使用 dotnet run - 这是一个额外的步骤。我明白他的论点,我只是不同意它更容易或更好
    • 是的,我经常在本地托管 IIS,尽管我的原因是 IIS 和 IIS express 之间的行为差​​异,这在 Core 中不再存在。我接受使用dotnet run 是一个额外的步骤,但如果您想更接近“编辑完成”的方法,请查看使用dotnet watch run。这甚至消除了显式构建的需要。只需编辑文件(例如记事本)并刷新浏览器。详情请查看此链接:jonhilton.net/2016/08/04/…
    • 我认为您必须发布站点才能使用完整的 IIS,这是不可接受的。特别是。没有真正的 powershell API 可用于设置 IIS express... 真的令人沮丧... 不赞成 Microsoft...
    猜你喜欢
    • 1970-01-01
    • 2020-10-29
    • 2017-07-11
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多