Asp.net web api Web api调用在本地工作,但在Azure上不工作

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

我有同样的问题,根据以下问题,并试图回答,但从来没有解决问题

还有更多类似类型的

当我试图调用api时,它说找不到404

我的WebApi.config文件

// 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的连续部署功能