Asp.net web api Web api调用在本地工作,但在Azure上不工作
我有同样的问题,根据以下问题,并试图回答,但从来没有解决问题 还有更多类似类型的 当我试图调用api时,它说找不到404 我的WebApi.config文件Asp.net web api Web api调用在本地工作,但在Azure上不工作,asp.net-web-api,http-status-code-404,azure-web-app-service,Asp.net Web Api,Http Status Code 404,Azure Web App Service,我有同样的问题,根据以下问题,并试图回答,但从来没有解决问题 还有更多类似类型的 当我试图调用api时,它说找不到404 我的WebApi.config文件 // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "versionApi", routeTemplate: "api/{version}/{c
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "versionApi",
routeTemplate: "api/{version}/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
API控制器
[Authorize]
[RequiresSSL]
[RoutePrefix("api/v2/Configuration")]
public class ConfigurationAPIv2Controller : ApiController
{
[Dependency]
public IConfigurationServicev2 configurationService { get; set; }
[Dependency]
public IAccountService accountService { get; set; }
#region testapi
[Route("getstring")]
[HttpGet]
public IHttpActionResult getstring()
{
return Ok("Success");
}
[Route("putstring")]
[HttpPut]
public IHttpActionResult putstring()
{
return Ok("Success");
}
#endregion
文件夹结构如下所示:
对于get和Put方法,我都遇到了以下问题
404路由问题可能导致错误。因为您正在为Web API使用路由属性。请确保GlobalConfiguration.Configure(WebApiConfig.Register);高于其他代码
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
和config.maphttpAttribute路由();代码高于其他路由配置
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "versionApi",
routeTemplate: "api/{version}/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
此外,尝试删除控制器中的以下代码,以测试其是否与依赖注入模块相关
[Dependency]
public IConfigurationServicev2 configurationService { get; set; }
[Dependency]
public IAccountService accountService { get; set; }
如果它也不能为你工作。在WebApiConfig类中设置IncludeErrorDetailPolicy属性后,可以从web服务器获取详细错误消息
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
Visual Studio不会将default.html页面添加到wwwroot,IIS会添加
只需将default.html页面添加到项目中的wwwroot,然后重新部署到Azure。即使我尝试根据您的回答删除[Authorize]和[requiressl]属性,但问题相同,标头请求URL:请求方法:选项状态代码:404找不到远程地址:23.100.46.198:443引用方策略:降级时没有引用方,即使是使用简单获取方法的普通testapi控制器[RoutePrefix(“api/v2/test”)]公共类testapi控制器:ApiController{#region testapi[Route(“getstring”)][HttpGet]public IHttpActionResult getstring(){return Ok(“Success”);}[Route(“putstring”)][HttpPut]public IHttpActionResult putstring(){return Ok(“Success”);}#endregion}清除git repo并只重新推送所需文件,它就可以工作了——因为我使用了Azure的连续部署功能