我一直在尝试使用多个参数执行get方法,但有时候结果是404,否则如果它找到方法然后406(Not Acceptable)。它正在使用单一参数。
案例1 :单一参数 - >工作返回字符串
请求网址 -
http://localhost/odata/Monitoring/GetTestingDone(number=1234)

方法 -
[EnableQuery]
public IHttpActionResult GetTestingDone(long number)
{
string a = Convert.ToString(number);
return Ok(a);
}

在edmx模型中注册 -
builder.EntityType<TestingType>().Collection.Function("GetTestingDone").Returns<string>().Parameter<long>("number");
&#13;
案例2 :多个参数 - 返回404未找到
请求网址 -
http://localhost/odata/MonitoringAttributes/IsTested(number1=,number2=,number3=13675,value=FederalRegistration)
&#13;
方法 -
[EnableQuery]
public IHttpActionResult IsTested(int? number1, int? number2, int? number3, string value)
{
ObjectParameter isTested = new ObjectParameter("isTested", typeof(bool));
var result = db.vm_getTested(number1, number2, number3, value, isTested)
.ToList();
bool asd = Convert.ToBoolean(isTested.Value);
return Ok(asd);
}
&#13;
在edmx模型中注册 -
var IsTested = builder.EntityType<TestingType>()
.Collection
.Function("IsTested")
.Returns<bool>();
IsTested.Parameter<int?>("number1");
IsTested.Parameter<int?>("number2");
IsTested.Parameter<int?>("number3");
IsTested.Parameter<string>("value");
&#13;
CASE 3 :输入方法但返回406(不可接受)
请求的网址 -
http://localhost/odata/MonitoringAttributes/IsTested?number1=&number2=&number3=13675&value=FederalRegistration
&#13;
方法 -
[HttpGet]
[Route("odata/Monitoring/IsTested")]
EnableQuery]
public IHttpActionResult IsTested(int? number1, int? number2, int? number3, string value)
{
ObjectParameter isTested = new ObjectParameter("isTested", typeof(bool));
var result = db.vm_getTested(number1, number2, number3, value, isTested)
.ToList();
bool asd = Convert.ToBoolean(isTested.Value);
return Ok(asd);
}
&#13;
在edmx模型中注册与 CASE 2 相同。
所以我错过了什么或做错了。请指导我。
答案 0 :(得分:0)
做了一些研究并找到了做到这一点的方法 -
请求网址 -
http://localhost/odata/MonitoringAttributes/Class.IsTested(number1=null,number2=null,number3=13675,value='FederalRegistration')
所以这里没有接受空值我们需要传递字符串“null”,字符串将是单引号而不是双引号。
方法 - &gt;
[HttpGet]
EnableQuery]
public IHttpActionResult IsTested([FromOdataUrl]int? number1,[FromOdataUrl] int? number2,[FromOdataUrl] int? number3, string value)
{
ObjectParameter isTested = new ObjectParameter("isTested", typeof(bool));
var result = db.vm_getTested(number1, number2, number3, value, isTested)
.ToList();
bool asd = Convert.ToBoolean(isTested.Value);
return Ok(asd);
}
这里param的前缀为“[FromOdataUrl]”仅适用于int或long。对于字符串或bool,不需要。
在edmx模型中注册与 CASE2
相同