2016-07-27 92 views
27

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

我试过用各种方式修改launchSettings.json文件。例如,本地IIS更换IIS快递的所有匹配和更新applicationUrllaunchUrl使用个性化的本地主机http://sample.local(我已经更新了主机文件和配置已经IIS管理器),但并不快乐。的

默认设置属性/ 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" 
     } 
    } 
    } 
} 

回答

37

您目前不能直接使用IIS,同时开发主办的ASP.NET核心应用,为开发文件夹不提供所有IIS需要托管的必要文件。这使得在运行ASP.NET Core的开发环境中有点痛苦。

正如在this article by Rick Strahl中指出的那样,尝试这样做并不是很多理由。运行ASP.NET Core应用程序时,IIS执行的操作很少 - 事实上,您的应用程序不再直接在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

+8

我没有得到里克斯特拉尔的论点。例如,如果您正在开发一个带有JS前端的.NET后端,则需要后端运行整个时间。我现在必须在每次更改时发布后端,或者在Visual Studio中打开我的后端项目并保持调试运行。而之前,我会根据需要进行构建,并通过IIS进行托管。这是一个额外的步骤,不是很好。 – Delosdos

+3

这实际上是他为正在开发时不使用IIS而提出的论点。在开发JS前端工作之前,不要直接在Kestrel上使用'dotnet run'运行。这样你就不需要打开解决方案,不需要发布也不需要使用IIS。 – Sock

+7

在.NET的预.NET版本中,您的应用程序可以由IIS托管,除非您特别需要进行更改,否则无需打开Visual Studio。进行更改后,只需点击构建即可完成。使用Kestrel,不仅需要构建,还需要在启动JS前端开发之前发布或使用'dotnet run' - 这是一个额外的步骤。我得到他的观点,我只是不同意它更容易或更好 – Delosdos

相关问题