2017-03-29 133 views
1

我有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自動創建它? 另外,我仍然對以前的問題感到好奇。

+0

我不知道這是否與您無關,但在這裏我們所遇到的。傳統ASP.NET和Core運行方式不同。使用ASP.NET Core azure運行一個包含Kestrel Http服務器的可執行文件。這意味着您無法在運行時替換現有的可執行文件。我們必須停止服務副本文件並再次運行。但是我們使用Octupus進行部署。 –

+0

感謝您的回覆。這是真的,但我的WebDeploy配置已經處理了這個:)部署是成功的,但除非我手動將正確的web.config複製到發佈目錄中,否則應用程序不會啓動。 – severin

+0

嗯,我有和你一樣的.proj文件結構。當我運行msbuild/t:restore時; msbuild/t:build; msbuild/t:在我的電腦上發佈我在我的發佈文件夾中得到了我需要的一切。你的項目根目錄下是否有web.config? PS,我使用VS 2017.如果你願意,我可以分享我們項目結構的截圖。 –

回答

0

添加到信息您csproj文件,你需要複製web.config,像這樣:

<ItemGroup> 
    <Content Update="web.config"> 
    <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> 
    </Content> 
</ItemGroup>