应用程序(网络 API)在本地运行良好。但在 azure (应用程序服务)请求中,如 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());
});
...
}
网络配置:
<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://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/azure-apps/troubleshoot?view=aspnetcore-2.0#run-the-app-in-the-kudu-console
引用:https://learn.microsoft.com/en-us/azure/app-service/web-sites-enable-diagnostic-log
关于c# - Azure 中的 ASP.NET Core 1.1 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50372025/