1

我們目前在Oracle數據庫中有一個視圖。我們需要創建一個Web API來接受輸入參數並查詢Oracle DB中的視圖並以JSON格式返回響應。我是ASP.NET和Web服務的新手。下面是服務使用查詢參數查詢Oracle數據庫Web API

namespace TGSSample.Controllers 
{ 
public class TGSSampDataController : ApiController 
{ 
    public HttpResponseMessage Getdetails([FromUri] string id) 
    { 

     List<OracleParameter> prms = new List<OracleParameter>(); 
     List<string> selectionStrings = new List<string>(); 
     string connStr = ConfigurationManager.ConnectionStrings["TGSDataConnection"].ConnectionString; 
     using (OracleConnection dbconn = new OracleConnection(connStr)) 
     { 
      DataSet userDataset = new DataSet(); 
      var strQuery = "SELECT * from LIMS_SAMPLE_RESULTS_VW where JRS_NO =" + id; 

      var returnObject = new { data = new OracleDataTableJsonResponses(connStr, strQuery, prms.ToArray()) }; 
      var response = Request.CreateResponse(HttpStatusCode.OK, returnObject, MediaTypeHeaderValue.Parse("application/json")); 
      ContentDispositionHeaderValue contentDisposition = null; 
      if (ContentDispositionHeaderValue.TryParse("inline; filename=ProvantisStudyData.json", out contentDisposition)) 
      { 
       response.Content.Headers.ContentDisposition = contentDisposition; 
      } 
      return response; 
     } 
    } 

我試圖調試,並在我給喜歡http://localhost:6897/api/TGSSampData?id=379的URL的代碼,但它拋出喜歡在這裏輸入的形象描述 enter image description here 我沒有改變任何東西與RouteConfig.cs或WebApiConfig錯誤的.cs。

namespace TGSSample 
{ 
public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.MapHttpAttributeRoutes(); 

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

我不知道爲什麼我得到錯誤。我已經改變任何東西,或不renamed.Can請人幫我這個 enter image description here

+0

你的錯誤消息說你嘗試過'/ api/TGSData'而不是'/ api/TGSSampData' - 這可能是問題嗎? – Beno

+0

show webapiconfig – Nkosi

+0

在你的路徑/ api/TGSData上找不到控制器,這就是錯誤對你說的。此外,您在構建查詢時遇到錯誤。你的ID應該在'',但更好的使用OracleCommandParameters! – mybirthname

回答

1

Parameter Binding in ASP.NET Web API

使用[FromUri]

要強制的Web API來讀取URI的複雜類型,將 [FromUri]屬性添加到參數中。

取出[FromUri]屬性,你可以使用[HTTPGET]屬性爲好。

public class TGSSampDataController : ApiController { 
    //according to convention-based route mapping in webapiconfig 
    //api/{controller}/{id} should map the following to this action 
    //GET api/TGSSampData?id=379 
    //GET api/TGSSampData/379 
    [HttpGet] 
    public HttpResponseMessage Get(string id) { ... } 
} 
+0

NKosi我做了改變,但仍然得到相同的錯誤。我試着給出'api/TGSSampData?id = 379'和'api/TGSSampData/379' – trx

+0

控制器中是否還有其他未包含在此示例中的操作? – Nkosi

+0

沒有這是唯一的,我有其他類與處理JSON – trx