C# 从Seroperate MVC应用程序本地引用Web Api

C# 从Seroperate MVC应用程序本地引用Web Api,c#,asp.net-web-api,asp.net-mvc-5,C#,Asp.net Web Api,Asp.net Mvc 5,我有以下Web Api public class ApiTestController : ApiController { // GET api/<controller> [HttpGet] public string UploadImage(int id) { return "You entered = " + id; } } 公共类ApiTestController:ApiController { //获取api/ [Htt

我有以下Web Api

public class ApiTestController : ApiController
{
    // GET api/<controller>
    [HttpGet]
    public string UploadImage(int id)
    {
        return "You entered = " + id;
    }
}
公共类ApiTestController:ApiController
{
//获取api/
[HttpGet]
公共字符串上载映像(int-id)
{
return“您输入的=”+id;
}
}
当我运行并输入/api/ApiTest/3时,它会点击它并返回您输入的3

现在,在我单独的MVC应用程序中,我尝试通过执行以下操作来引用相同的api方法

 private const string WebUrl = "http://localhost:1769/api/ApiTest/";

    //
    // GET: /Home/
    public ActionResult Index()
    {
        try
        {
            var test = GetInvoiveNo(3);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }

        return View();
    }

    public string GetInvoiveNo(int id)
    {
        var uri = WebUrl + id;
        using (var httpClient = new HttpClient())
        {
            Task response = httpClient.GetStringAsync(uri);

            return JsonConvert.DeserializeObjectAsync<string>(response.ToString()).Result;
        }
    }
private const string WebUrl=”http://localhost:1769/api/ApiTest/";
//
//回家/
公共行动结果索引()
{
尝试
{
var测试=GetInvoiveNo(3);
}
捕获(例外情况除外)
{
Console.WriteLine(例如ToString());
}
返回视图();
}
公共字符串GetInvoiveNo(int id)
{
var uri=WebUrl+id;
使用(var httpClient=new httpClient())
{
任务响应=httpClient.GetStringAsync(uri);
返回JsonConvert.DeserializeObjectAsync(response.ToString()).Result;
}
}
但我得到了一个错误:

发生了一个或多个错误

因此,我研究了内部异常,它是这样说的:

分析值时遇到意外字符:S.路径“”,第0行,位置0。“}


现在我不确定我做错了什么,所以如果有人能告诉我或给我一个简单的例子,我将不胜感激。

您的问题是您的回复格式不正确

在下面的代码中,您尝试调用user response.ToString(),这是错误的,您必须使用响应的结果

public string GetInvoiveNo(int id)
    {
        var uri = WebUrl + id;
        using (var httpClient = new HttpClient())
        {
            var response = httpClient.GetStringAsync(uri);

            return JsonConvert.DeserializeObjectAsync<string>(response.Result).Result;
        }
    }
公共字符串GetInvoiveNo(int-id)
{
var uri=WebUrl+id;
使用(var httpClient=new httpClient())
{
var response=httpClient.GetStringAsync(uri);
返回JsonConvert.DeserializeObjectAsync(response.Result).Result;
}
}

response.ToString()的值是多少?我刚刚尝试了你的代码,但下面有一条红色的错误线。结果显示无法解析符号“Result”。请参阅我的更新。我已从任务响应更改为var response。刚刚注意到你编辑了我们的答案让我快速尝试