我有一个工作的Web API应用程序,它有一个名为StudyDataController
的控制器,它接受输入参数,查询数据库并以JSON返回结果。这个工作正常。调用http://localhost:3214/api/StudyDataController?param1=R01¶m2=05-NOV-16
返回结果。在同一个应用程序上的Web API端点
public class StudyDataController : ApiController
{ [HttpGet]
public HttpResponseMessage Getdetails(string param1, DateTime param2)
{
List<OracleParameter> p = new List<OracleParameter>();
p.Add(new OracleParameter("param1", OracleDbType.Varchar2,param1, ParameterDirection.Input));
p.Add(new OracleParameter("param2",OracleDbType.Date,param2, ParameterDirection.Input));
string connStr = ConfigurationManager.ConnectionStrings["StudyDataConnection"].ConnectionString;
using (OracleConnection dbconn = new OracleConnection(connStr))
{
DataSet userDataset = new DataSet();
var strQuery = "SELECT * from Studydata_VW where Request_id = :param1 and RequestDate > :param2 ";
var returnObject = new { data = new OracleDataTableJsonResponse(connStr, strQuery, prms.ToArray()) };
var response = Request.CreateResponse(HttpStatusCode.OK, returnObject, MediaTypeHeaderValue.Parse("application/json"));
ContentDispositionHeaderValue contentDisposition = null;
if (ContentDispositionHeaderValue.TryParse("inline; filename=StudyData.json", out contentDisposition))
{
response.Content.Headers.ContentDisposition = contentDisposition;
}
return response;
}}}
但我现在需要创建一个更多的API有不同的输入参数和查询是不同的,并返回JSON结果。为此,我试图在同一应用程序上创建一个名为StudyDatawithDateController
的控制器。
public class StudyDatawithDateController : ApiController
{ [HttpGet]
public HttpResponseMessage Getdetails(DateTime param1,String param2)
{
List<OracleParameter> p = new List<OracleParameter>();
p.Add(new OracleParameter("param1",OracleDbType.Date,param1, ParameterDirection.Input));
p.Add(new OracleParameter("param2", OracleDbType.Varchar2,param2, ParameterDirection.Input));
string connStr = ConfigurationManager.ConnectionStrings["StudyDataConnection"].ConnectionString;
using (OracleConnection dbconn = new OracleConnection(connStr))
{
DataSet userDataset = new DataSet();
var strQuery = "SELECT * from Studydata_VW where Submit_date> :param1 and Status = :param2 ";
var returnObject = new { data = new OracleDataTableJsonResponse(connStr, strQuery, prms.ToArray()) };
var response = Request.CreateResponse(HttpStatusCode.OK, returnObject, MediaTypeHeaderValue.Parse("application/json"));
ContentDispositionHeaderValue contentDisposition = null;
if (ContentDispositionHeaderValue.TryParse("inline; filename=StudyDatawithDate.json", out contentDisposition))
{
response.Content.Headers.ContentDisposition = contentDisposition;
}
return response;
}}}
如果我尝试调用端点就像http://localhost:3214/api/StudyDatawithDateController?param1=01-NOV-16¶m2=COMPLETE
它说Not Found Error
。
的webConfig.cs就像下面
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
我们可以对相同的WebAPI应用两个控制器。大部分问题/示例都在讨论关于具有相同名称控制器的问题。但在这里我有不同的名字,我该如何处理这个问题。
您可以拥有任意数量的控制器。你忘了添加http方法属性?你需要发布你的代码。 – Marco
可能是的。 bou're probaby将不得不澄清你的问题。也许一些代码 –
@Marco我编辑了这个问题。你能告诉我我在这里失踪了什么 – trx