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