2017-08-28 47 views
0

我有一個API,它由三個參數(param1,param2,param3)構成。對於電子郵件參數它不起作用,因爲'@'字符。但通常工作正常。請檢查我的下面的代碼。Web API不調用,如果參數包含@字符

API控制器

public class ApiPINVerificationController : ApiController 
{ 
    public ApiPINVerificationController() 
    { 

    } 

    [HttpPost] 
    public IHttpActionResult GetStudentByPIN(string param1,string param2,string param3) 
    { 
     //Balance Search Audit Log Entry 
     SLAF.DataAccessManager.DTO.BalanceSearchLog balanceSearchLog = new DataAccessManager.DTO.BalanceSearchLog 
     { 
      PIN=param1, 
      CellPhone=param2, 
      Email=param3 
     }; 
     APIManager.InsertBalanceSearchLog(balanceSearchLog); 
     return Ok(new 
     { 
      Student=objStudent 
     }); 
    } 
} 

WebApiConfig

public static class WebApiConfig 
{ 
    public static string UrlPrefixRelative { get { return "~/Api"; } } 
    public static void Register(HttpConfiguration config) 
    { 
     //config.Formatters.Add(new BsonMediaTypeFormatter()); 
     config.Formatters.Remove(config.Formatters.XmlFormatter); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{param}", 
      defaults: new { param = RouteParameter.Optional } 
     ); 
     config.Routes.MapHttpRoute(
      name: "Api2", 
      routeTemplate: "api/{controller}/{action}/{param1}/{param2}" 
     ); 
     config.Routes.MapHttpRoute(
      name: "Api3", 
      routeTemplate: "api/{controller}/{action}/{param1}/{param2}/{param3}" 
     ); 
    } 
} 
+0

你不能收到這樣的參數,,你可以使用JSON參數或主體內容的參數 –

回答

1

我敢肯定的是,@字符是不是你的問題。我看到電子郵件是最後一個參數,因爲它最有可能以.com或其他內容結尾,所以URL不起作用。

嘗試添加尾隨/字符,您將看到API調用成功。

https://youraddress.com/api/something/something/param1/param2/[email protected]/ 
+0

是@hankide其工作 – sebu

+0

@sebu很好聽,如回答隨意標註它,如果它解決您的問題。 :) – hankide

相關問題