如何配置ASP.NET Core 1.0以使用本地IIS而不是IIS Express?

Olu*_*emi 34 asp.net iis visual-studio-debugging asp.net-core

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

我试过以各种方式修改launchSettings.json文件.例如,替换所有出现的IIS表达本地IIS和更新applicationUrllaunchUrl使用个性化的本地主机的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"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Soc*_*ock 42

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

正如Rick Strahl本文中指出的那样,尝试这样做的原因并不多.运行ASP.NET核心应用程序时IIS几乎没有 - 实际上您的应用程序不再直接在IIS进程中运行,而是在托管Kestrel Web服务器的完全独立的控制台应用程序中运行.因此,当您自托管控制台应用程序时,您确实在基本相同的环境中运行.

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

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

dotnet publish
  --framework netcoreapp1.0 
  --output "c:\temp\AlbumViewerWeb" 
  --configuration Release
Run Code Online (Sandbox Code Playgroud)

然后,您可以将IIS站点指向输出文件夹.确保将应用程序池CLR版本设置为No Managed Code并且AspNetCoreModule可用.

有关更多详细信息,请参阅https://docs.asp.net/en/latest/publishing/iis.html

  • 我没有得到Rick Strahl的论点.例如,如果您正在开发带有JS前端的.NET后端,则需要让后端一直运行.我现在必须在每次进行更改时发布后端,或者在visual studio中打开我的后端项目并保持调试运行.以前,我会根据需要构建并通过IIS进行托管.现在这是一个额外的步骤,不是很好. (10认同)
  • 在.NET的.NET之前的核心版本中,您的应用程序可以由IIS托管,除非您特别需要进行更改,否则无需打开Visual Studio.进行更改后,只需点击构建即可完成.使用Kestrel,不仅需要构建,还需要在启动JS前端开发之前发布或使用`dotnet run` - 这是一个额外的步骤.我得到他的论点,我只是不同意它更容易或更好 (9认同)
  • 我发现这是不可接受的,你必须发布网站,以便使用完整的IIS.ESP.没有真正的PowerShell API可用于设置IIS Express ...真的很好......大拇指向下微软...... (7认同)
  • 是的,我经常在IIS本地托管,不过我的理由是IIS和IIS express之间的行为差​​异,Core中不再存在.我接受使用`dotnet run`是一个额外的步骤,但如果你想接近'编辑和你已完成'的方法,看看使用`dotnet watch run`.这甚至消除了明确构建的需要.只需编辑文件(例如记事本)并刷新浏览器.有关详细信息,请查看此链接:https://jonhilton.net/2016/08/04/compile-your-changes-on-the-fly-with-net-core/ (5认同)
  • 这实际上是他在开发时使用IIS进行的论证.在开始JS前端工作之前,不要在开发中直接使用`dotnet run`直接在Kestrel上运行.这样您就不需要打开解决方案,也不需要发布,也不需要使用IIS. (4认同)