ASP.NET Core Web API 在本地运行,但不在 Azure 应用服务上运行
ASP.NET Core Web API runs locally but not on Azure app service
我一直在严格按照这个 link (https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.2&tabs=visual-studio) 创建我的网站 api。
**在本地,它工作正常。测试了 links,它返回了 JSON 数据
但是,一旦我将我的网络 api 部署到 azure 应用程序服务,我所有的 api link 都会返回错误 404。有什么我可能有的吗错过了路由?
在我的控制器中,我已将其添加到我的头上。
[Route("api/xxx")]
[ApiController]
在每个函数中,我都添加了这个
[HttpPut("xxx/{Id}")]
至于我的program/startup和教程完全一样
计划class
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
如果您需要更多信息,请告诉我。
非常感谢任何帮助谢谢!
设置web.config
如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="dotnet" arguments=".\Somerandomname.WebApi.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
更多细节,你可以参考这篇article. And here is Publish an ASP.NET Core Web API to an Azure App Services Web App你可以关注
我知道答案已经帮助您解决了问题。但是我遇到了类似的情况。在我的例子中,我的 api 已经启动并且 运行 但是当我导航到 https://api.mydomain.com 时我期望看到的 Swagger 页面显示错误 404 未找到,这让我假设应用程序不工作。
经过几个小时的调整和打开和关闭 azure 应用程序服务调试和日志流。我注意到我的应用程序中的 hangfire 作业正在启动和工作。
所以我回去检查我的代码。
这几乎是我所做的让我认为应用程序服务无法正常工作的事情。哪个 infact 工作得很好。
Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, UserManager<AppUser> userManager,
RoleManager<IdentityRole> roleManager)
{
//Stripped Down for readability purpose
app.UseSwagger();
if (!env.IsProduction())
{
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Sample API V1");
c.RoutePrefix = string.Empty;
});
}
if (!env.IsProduction())
{
app.UseHangfireDashboard();
}
else
{
app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
Authorization = new[] { new HangfireAuthorizationFilter() }
});
}
app.UseHangfireServer();
}
所以,在我的例子中,正是这一行导致应用程序服务 return 错误 404
app.UseSwagger();
if (!env.IsProduction())
{
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Sample API V1");
c.RoutePrefix = string.Empty;
});
}
因为我只想在测试或开发环境中显示 Swagger 页面,而不是在生产环境中显示。但是我内心的人期待着 swagger 页面出现并显示。
我希望这对任何和我一样的人都有帮助。
我猜你的路由不是 done.try 你的 Url+/api/xxx.
示例:https://xxxx.azurewebsites.net/api/xxx
这里https://xxxx.azurewebsites.net是你的蔚蓝url,api/xxx是你的发射url 在 launchSettings.json 文件中定义如 "launchUrl": "api/xxx/",
[Route("api/[controller]")] 应该在你的控制器中 class.
应该可以。
我一直在严格按照这个 link (https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.2&tabs=visual-studio) 创建我的网站 api。
**在本地,它工作正常。测试了 links,它返回了 JSON 数据
但是,一旦我将我的网络 api 部署到 azure 应用程序服务,我所有的 api link 都会返回错误 404。有什么我可能有的吗错过了路由?
在我的控制器中,我已将其添加到我的头上。
[Route("api/xxx")]
[ApiController]
在每个函数中,我都添加了这个
[HttpPut("xxx/{Id}")]
至于我的program/startup和教程完全一样
计划class
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); }
Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseMvc(); }
如果您需要更多信息,请告诉我。 非常感谢任何帮助谢谢!
设置web.config
如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="dotnet" arguments=".\Somerandomname.WebApi.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
更多细节,你可以参考这篇article. And here is Publish an ASP.NET Core Web API to an Azure App Services Web App你可以关注
我知道答案已经帮助您解决了问题。但是我遇到了类似的情况。在我的例子中,我的 api 已经启动并且 运行 但是当我导航到 https://api.mydomain.com 时我期望看到的 Swagger 页面显示错误 404 未找到,这让我假设应用程序不工作。
经过几个小时的调整和打开和关闭 azure 应用程序服务调试和日志流。我注意到我的应用程序中的 hangfire 作业正在启动和工作。
所以我回去检查我的代码。
这几乎是我所做的让我认为应用程序服务无法正常工作的事情。哪个 infact 工作得很好。
Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, UserManager<AppUser> userManager,
RoleManager<IdentityRole> roleManager)
{
//Stripped Down for readability purpose
app.UseSwagger();
if (!env.IsProduction())
{
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Sample API V1");
c.RoutePrefix = string.Empty;
});
}
if (!env.IsProduction())
{
app.UseHangfireDashboard();
}
else
{
app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
Authorization = new[] { new HangfireAuthorizationFilter() }
});
}
app.UseHangfireServer();
}
所以,在我的例子中,正是这一行导致应用程序服务 return 错误 404
app.UseSwagger();
if (!env.IsProduction())
{
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Sample API V1");
c.RoutePrefix = string.Empty;
});
}
因为我只想在测试或开发环境中显示 Swagger 页面,而不是在生产环境中显示。但是我内心的人期待着 swagger 页面出现并显示。
我希望这对任何和我一样的人都有帮助。
我猜你的路由不是 done.try 你的 Url+/api/xxx.
示例:https://xxxx.azurewebsites.net/api/xxx
这里https://xxxx.azurewebsites.net是你的蔚蓝url,api/xxx是你的发射url 在 launchSettings.json 文件中定义如 "launchUrl": "api/xxx/",
[Route("api/[controller]")] 应该在你的控制器中 class.
应该可以。