2015-09-25 56 views
0

我有一个区域名称为管理,和我有名字在这方面的ApiControllerProductPicture,在这个控制器我通过AddProductPicture,我想打电话从视图这个动作(名字有动作这是在同一地区),
所以我写如何获取某个区域内的ApiController中的动作的Url?

$upload.upload({ 
       url:'/Admin/api/ProductPicture/AddProductPicture', 
       fields:$routeParams.ProductId, 
       file: file 
      }) 

访问它,但它不工作,和控制台给我404错误,这是什么问题?

编辑:我在App_Start将此代码添加到WebApiConfig

public static void Register(HttpConfiguration config) 
    { 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     config.Routes.MapHttpRoute(
     name: "API Area", 
     routeTemplate: "Admin/api/{controller}/{action}/{id}", 
     defaults: new { id = RouteParameter.Optional } 
     ) 
    } 

,并在网络选项卡上的网址:http://localhost:3471/Admin/api/ProductPicture/AddProductPicture ,但它不工作!

+0

404是服务器根据发送的内容在服务器上创建的服务器路径问题或错误响应。没有办法让我们知道为什么基于JavaScript片段。 – charlietfl

+0

@charlietfl我知道,由于我定义的路径不正确导致这个错误,我想知道我可以如何纠正这个 – pejman

回答

0

您需要注册管理区域的路由。

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     ... 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     // ***** This is what you need ***** 
     config.Routes.MapHttpRoute(
      name: "AdminDefaultApi", 
      routeTemplate: "Admin/api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 
+0

我之前添加了这个,但它不起作用。我编辑我的问题 – pejman

+0

常规MVC控制器在管理区内工作吗?顺便说一句,你不能在浏览器中查看AddProductPicture是否需要HttpPost方法;你需要使用** fiddler **或** PostMan **。 – Win

+0

是的,只是API控制器不工作 – pejman

0

您可以发送ApiController的代码和您的路由配置吗?您还可以在浏览器中打开开发人员工具,查看网络选项卡并查看实际调用的路径。

+0

我编辑我的问题 – pejman

相关问题