簡體   English   中英

Azure中的ASP.NET Core 1.1路由

[英]ASP.NET Core 1.1 routing in Azure

App(web api)在本地工作正常。 但在azure(App Service)請求中,如http://myapp.azurewebsites.net/api/values返回錯誤404(您要查找的資源已被刪除,其名稱已更改,或暫時不可用。)路由正在尋找對於物理路徑D:\\ home \\ site \\ wwwroot \\ api \\ values不存在。

在program.cs中:

var host = new WebHostBuilder()
            .UseKestrel()
            .UseUrls("http://myapp.azurewebsites.net")
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();

在startup.cs中:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddMvcCore(opts =>
         {
              opts.ModelBinderProviders.Insert(0, new CommaDelimitedArrayModelBinderProvider());
          });
    ...
}

web.config中:

<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="flase" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>
</configuration>

更新: 錯誤詳情

更新2:子錯誤代碼為0(sc-substatus)。 sc-win32-status為2(找不到文件)。 我還啟用了所有日志,查看了它們,但沒有找到任何其他提示。 Kudu遠程執行控制台根本沒有顯示任何錯誤和請求證據。 我錯了

更新3: api的簡短版本https://drive.google.com/open?id=1TUCImJSmuCC1HJK-x95wg5VOUUEB96wZ

404錯誤有很多子狀態代碼,要縮小查找子狀態代碼,可以查看失敗請求跟蹤日志。

確保部署文件在wwwroot文件夾中可用。 將web.config文件放在/ site / wwwroot目錄下。

默認情況下,在Azure WebApps上,所有文件都與應用程序一起存儲在文件系統中,包括媒體文件。 請參閱文章結構在azure上 - https://github.com/projectkudu/kudu/wiki/File-structure-on-azure以了解Azure WebApp上的文件和目錄集。

要在Azure門戶中啟用診斷,請轉到Web應用程序的頁面,然后單擊設置>診斷日志。

此外,許多啟動錯誤不會在應用程序事件日志中生成有用的信息。 您可以在Kudu遠程執行控制台中運行該應用程序以發現錯誤:查看本文檔中提到的步驟: https//docs.microsoft.com/en-us/aspnet/core/host-and-deploy/azure-應用/解決?視圖= aspnetcore-2.0#運行的應用程序內-內式捻控制台

參考: https//docs.microsoft.com/en-us/azure/app-service/web-sites-enable-diagnostic-log

在Core Web API中添加了一個自定義DateTime Model Binding ,它在API中綁定了自定義DateTime格式。 我在本地和天藍色都工作得很好。

你可以去這個鏈接檢查。 並使用此鏈接格式化日期時間。 在此輸入圖像描述

正如@Ajay所說,您可以在azure門戶中啟用診斷日志

此外,您可以刪除KUDU中的所有文件,讓webapp將文件重寫到其中。

或者,當您發布應用程序時,單擊“ 刪除目標位置的其他文件 ”以避免您進行某些更改但不會覆蓋。 在此輸入圖像描述

項目在vs2015中創建,然后遷移到vs2017。 顯然,並非所有必要的更改都在csproj文件中進行。 從頭開始重寫后,問題就解決了。 我也遷移到了.net 2.0。 csproj的最終版本:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <RootNamespace>ClearIt.Api</RootNamespace>
    <ApplicationIcon />
    <OutputType>Exe</OutputType>
    <StartupObject />
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\Dal\Dal.csproj" />
    <ProjectReference Include="..\Models\Models.csproj" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
    <PackageReference Include="AutoMapper" Version="6.0.2" />
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="2.0.1" />
    <PackageReference Include="HtmlAgilityPack" Version="1.8.1" />
    <PackageReference Include="IdentityServer4.AccessTokenValidation" Version="2.0.0" />
    <PackageReference Include="Joonasw.AspNetCore.SecurityHeaders" Version="2.4.0" />
    <PackageReference Include="Microsoft.AspNetCore.Cors" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.0" />
    <PackageReference Include="SkiaSharp" Version="1.59.1" />
    <PackageReference Include="System.Text.Encoding.CodePages" Version="4.4.0" />
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
  </ItemGroup>
  <ItemGroup>
    <None Update="appsettings.Development.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="appsettings.Production.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="Settings.job">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="web.config">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM