我有netcoreapp1.1,我試圖用WebDeploy發佈到Azure。我能夠執行dotnet publish
並將內容部署到Azure,但該站點只是說「您無權查看此目錄或頁面」,這表示應用程序未運行。將netcoreapp1.1部署到Azure
我以前的應用程序已經使用net461作爲目標框架,我注意到發佈這些(使用dotnet publish
)已經導致創建web.config文件,這解釋了IIS如何運行它,但是這不會發生當目標框架是netcoreapp1.1時。
我一直在使用發佈的命令是這樣的: dotnet publish --configuration Release --runtime win7-x64 --output .deploy
這裏是我的項目文件:
<Project Sdk="FSharp.NET.Sdk;Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
<RuntimeIdentifiers>win7-x64</RuntimeIdentifiers>
<OutputType>Exe</OutputType>
</PropertyGroup>
<PropertyGroup>
</PropertyGroup>
<ItemGroup>
<Compile Include="Controllers/*.fs" />
<Compile Include="Startup.fs" />
<Compile Include="Program.fs" />
<None Remove="**/*.fs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="FSharp.Core" Version="4.1.*" />
<PackageReference Include="FSharp.NET.Sdk" Version="1.0.*" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="1.0.0" />
</ItemGroup>
</Project>
我怎麼打算運行在Azure上一個netcoreapp1.1?它必須是自包含的還是可以讓Azure應用服務從dll運行它?
編輯:
手動複製一個web.config到我發佈目錄我能夠獲取應用程序運行。我怎樣才能讓dotnet publish
自動創建它? 另外,我仍然對以前的問題感到好奇。
我不知道這是否與您無關,但在這裏我們所遇到的。傳統ASP.NET和Core運行方式不同。使用ASP.NET Core azure運行一個包含Kestrel Http服務器的可執行文件。這意味着您無法在運行時替換現有的可執行文件。我們必須停止服務副本文件並再次運行。但是我們使用Octupus進行部署。 –
感謝您的回覆。這是真的,但我的WebDeploy配置已經處理了這個:)部署是成功的,但除非我手動將正確的web.config複製到發佈目錄中,否則應用程序不會啓動。 – severin
嗯,我有和你一樣的.proj文件結構。當我運行msbuild/t:restore時; msbuild/t:build; msbuild/t:在我的電腦上發佈我在我的發佈文件夾中得到了我需要的一切。你的項目根目錄下是否有web.config? PS,我使用VS 2017.如果你願意,我可以分享我們項目結構的截圖。 –