使用查询参数Web API查询Oracle DB

时间:2016-11-16 05:23:07

标签: c# asp.net asp.net-mvc asp.net-web-api asp.net-web-api-routing

我们目前在Oracle DB中有一个视图。我们需要创建一个Web API,它接受输入参数并查询Oracle DB中的视图,并以JSON格式返回响应。我是ASP.NET和Web服务的新手。以下是服务的代码

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中但是它会抛出错误,例如在此处输入图片说明 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 }
        );        }}}

我不知道为什么我会收到错误。我已经改变了什么或没有改名。任何人都可以帮助我 enter image description here

1 个答案:

答案 0 :(得分:1)

Parameter Binding in ASP.NET Web API

  

使用[FromUri]

     

要强制Web API从URI中读取复杂类型,请添加    [FromUri] 属性参数。

删除 [FromUri] 属性,您也可以使用 [HttpGet] 属性。

    centerPanel.add(pane);