2017-05-10 63 views
1

我有同樣的問題,按照下列問題,並試圖回答,但從來沒有解決問題的Web API調用本地而不是工作在Azure上

Web api interface works locally but not on Azure

Web API interface works locally but gets 404 after deployed to Azure Website

和許多相似類型的...

,當我試圖調用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 

和文件夾結構是這樣的:

enter image description here

我得到follwowing問題的get和put方法 enter image description here

+0

即使我嘗試刪除[Authorize]和[RequiresSSL]屬性 –

回答

1

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); 
} 

And config.MapHttpAttributeRoutes();代碼高於其他路由配置。

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; 
+0

嘗試按照您的答案,但同樣的問題,標題 請求URL:https://XXXXXXX.azurewebsites.net/api/v2/configuration/ Employee/1747 請求方法:選項 狀態代碼:404未找到 遠程地址:23.100.46。198:443 引薦政策:無引薦-時降級即使對於簡單的get方法 –

+0

[RoutePrefix( 「API/V2 /測試」)] 公共類testapiController正常testapi控制器:ApiController { #地區testapi [Route(「getstring」)] [HttpGet] public IHttpActionResult getstring() { return Ok(「Success」); } 〔路線( 「putstring」)] [HttpPut] 公共IHttpActionResult putstring() { 返回OK( 「成功」); } #endregion } –

+0

清除git回購並重新推送必需的文件,它的工作原理 - 因爲我使用了連續部署到Azure功能 –

0

Visual Studio不會向wwwroot和IIS添加default.html頁面。

只需添加default.html中頁面的wwwroot在您的項目,然後重新部署到Azure上。

相關問題