-EDIT -
我试图将第一种方法修改为第二种方法,而不是一次性使用它们。
- 编辑 -
我有两个C#Web方法,一个没有参数:
[System.Web.Http.HttpPost]
[System.Web.Http.Route("api/call/postCall")]
public string postCall()
{
return "test success";
}
和一个参数:
[System.Web.Http.HttpPost]
[System.Web.Http.Route("api/call/postCall")]
public string postCall(int call)
{
return "posted value = " + call;
}
我用这个打电话给他们:
string data = "call=55";
byte[] dataStream = Encoding.UTF8.GetBytes(data);
string request = "http://<mySite>/api/call/postCall";
WebRequest webRequest = WebRequest.Create(request);
webRequest.Method = "POST";
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.ContentLength = dataStream.Length;
Stream newStream = webRequest.GetRequestStream();
newStream.Write(dataStream, 0, dataStream.Length);
newStream.Close();
WebResponse webResponse = webRequest.GetResponse();
第一个没有参数的方法返回test success
,但第二个接受参数的方法返回404未找到的错误。
有人能告诉我这里的错误吗?
答案 0 :(得分:1)
你不能拥有2个具有相同动词和网址的路由 - &gt;框架无法消除它们之间的歧义。如果它是一个简单的值(例如整数),请考虑将该参数添加到路由中:
[System.Web.Http.HttpPost]
[System.Web.Http.Route("api/call/postCall/{call}")]
public string postCall(int call)
{
return "posted value = " + call;
}
然后像这样打电话:
var request = WebRequest.Create("http://<mySite>/api/call/postCall/55");
request.Method = "POST";
using (var response = request.GetResponse())
using (var stream = response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
string result = reader.ReadToEnd();
}
对于不修改服务器某些状态的方法,您可以考虑使用GET动词。