【发布时间】:2014-04-04 19:12:31
【问题描述】:
我曾经使用 ASMX Web 服务,但后来读到(并被告知)从客户端等请求数据的更好方法是将 Web API 与 MVC 结合使用。
我创建了一个 MVC 4 Web api 应用程序并开始了解它的工作原理。
目前我的 valuesControllers 中有一个公共字符串 -
public class ValuesController : ApiController
{
// GET api/values/5
public string Get(int id)
{
return "value";
}
}
我目前正试图在我的客户中这样称呼它 -
class Product
{
public string value { get; set; }
}
protected void Button2_Click(object sender, EventArgs e)
{
RunAsync().Wait();
}
static async Task RunAsync()
{
using (var client = new HttpClient())
{
try
{
client.BaseAddress = new Uri("http://localhost:12345/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// HTTP GET
HttpResponseMessage response = await client.GetAsync("api/values/5");
if (response.IsSuccessStatusCode)
{
Product product = await response.Content.ReadAsAsync<Product>();
Console.WriteLine("{0}", product.value);
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
}
}
在调试时,我可以单步执行请求并成功输入 Web API 代码,但是在线 -
Product product = await response.Content.ReadAsAsync<Product>();
这失败并进入我的捕获异常 -
Error converting value "value" to type 'myDemo.Home+Product'. Path '', line 1, position 7.
这是为什么?
【问题讨论】:
-
因为它是
String,而不是Product。
标签: c# asp.net-mvc asp.net-web-api