2016-07-27 93 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

相關問題