2017-09-01 66 views
0

我应该输入什么URI才能运行我的Web API 2评分路线?我应该输入什么URI来运行我的Web API2?

我试图用POST方法如下URI和我得到的404错误:

http://localhost:52229/PersonalAutoAPI/RunRating 

这一个工程(不同的控制器):

http://localhost:52229/PersonalAutoAPI/Drivers 

我可以让我的司机API

这是我的webapiconfig.config.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web.Http; 

namespace PersonalAuto 
{ 
    public static class WebApiConfig 
    { 
     public static void Register(HttpConfiguration config) 
     { 
      // Web API configuration and services 

      // Web API routes 
      config.MapHttpAttributeRoutes(); 

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


      var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml"); 
      config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType); 
     } 
    } 
} 

这是我RatingControler.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Http; 
using PersonalAuto.Models; 

namespace PersonalAuto.Controllers 
{ 
    public class RatingControler : ApiController 

    { 
     public IEnumerable<RatingResult> PostRunRaing([FromBody] RatingInfo MyRateInfo) 
     { 
      RatingResult[] myRatingResult = 
       {new RatingResult{PremiumDP = 0M,PremiumEFTDownPament = 0M,PremiumMontlyPayment = 0M,PremiumEFTMonthlyPayment=0M,PremiumPIF=0M } 
      }; 
      return myRatingResult; 
     } 

     public IHttpActionResult PostRunRating([FromBody] RatingInfo MyRateInfo) 
     { 
      RatingResult MyRating = new RatingResult { PremiumDP = 0M, PremiumEFTDownPament = 0M, PremiumMontlyPayment = 0M, PremiumEFTMonthlyPayment = 0M, PremiumPIF = 0M }; 


      if (MyRating == null) 
      { 
       return NotFound(); 
      } 


      return Ok(MyRating); 

     } 
    } 
} 

这是我diverscontroler.cs(这一点也适用上述URI)

using PersonalAuto.Models; 
using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Web.Http; 
using System.Linq; 
using System.Net.Http; 
using System.IO; 

namespace PersonalAuto.Controllers 
{ 
    public class DriversController : ApiController 
    { 

     public IEnumerable<Driver> GetAllDrivers() 
     { 
      Driver[] myDriverArray = 
       { 
        new Driver { id = "1234", first_name = "eric", last_name = "last", dl_number = "1234", address_1 = "1234 test st", address_2 = "", city = "dallas", state = "TX", zip = "75248", mobile = "214-415-9224" } 
      }; 
      return myDriverArray; 
     } 

     public IHttpActionResult GetDriverByLicenseNo(string drivers_license_number, string drivers_license_state) 
     { 
      string PreToken = "xxxxx:xxx:xxxxxxxxxxxxx"; 
      string Token = Convert.ToBase64String(Encoding.UTF8.GetBytes(PreToken)); 

      if (drivers_license_state == null) 
       drivers_license_state = "TX"; 
      var driver = new Driver { id = Token, first_name = "eric", last_name = "last", dl_number = "1234", address_1 = "1234 test st", address_2 = "", city = "dallas", state = "TX", zip = "75248", mobile = "214-415-9224" }; // products.FirstOrDefault((p) => p.Id == id); 
      if (driver == null) 
      { 
       return NotFound(); 
      } 
      return Ok(driver); 

     } 

    } 
} 

我已经出来拉我的头发在这!任何帮助,将不胜感激!

+1

您的控制器被称为“Rating”而不是“RunRating”,正确的URI是“http:// localhost:52229/PersonalAutoAPI/Rating”。另外请注意,您目前有两种映射到相同路由“PostRunRaing”和“PostRunRating”的操作方法,如果要将它们都保存在同一个控制器中,则需要更改其中一个路由。 –

+1

路由设置取决于以'Controller'结尾的控制器类名称。在你的示例代码中,你拼错了:'RatingControler'应该是'RatingController' –

回答

0

路由设置取决于以Controller结尾的控制器类名称。在你的示例代码,您有它拼错:RatingControler应该RatingController

同时检查的PostRunRaing拼写 - 这似乎应该是PostRunRating,(但不能是因为你将有一个命名冲突。控制器不知道是否返回一个IEnumerable或IHttpActionResult)

解决这个问题,然后我想你的路线将是:

http://localhost:52229/PersonalAutoAPI/Rating/PostRunRating

0

有代码有两个问题:

  1. 将Rating RatingControler更改为RatingController。控制器工厂不认可RatingControler,因为它需要*控制器。
  2. 你不能有两个方法具有相同的http动词和方法名称。你不能在控制器中重载方法。
相关问题