我收到一个错误“无法从int转换为System.net.http.httpcompletionoption”

问题描述:

我无法找到任何关于此错误的谷歌,我只是想知道是否有人遇到过这个问题。这是我第一次构建一个REST Web API,并且将它连接到我的MVC应用程序,只是尝试使用一个ID来创建一个简单的GET来构建详细信息页面。我收到一个错误“无法从int转换为System.net.http.httpcompletionoption”

public ActionResult Details(Contact contactid) 
    { 
     Contact contact = new Contact(); 
     HttpClient client = new HttpClient(); 
     client.BaseAddress = new Uri("http://localhost:56194/"); 
     //CODE BELOW IS TAKING THE CLIENT AND ALLOWS IT TO ACCEPT JSON DATA 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
     ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 
     HttpResponseMessage response = client.GetAsync("api/contacts", contactid.ID).ContinueWith((Posttank) => Posttank.Result.EnsureSuccessStatusCode()); 
     if (response.IsSuccessStatusCode) 
     { 
      contact = response.Content.ReadAsAsync<Contact>().Result; 
     } 
     return View(contact); 

    } 

而且我的Web API方法是:

[ResponseType(typeof(contact))] 
    public IHttpActionResult Getcontact(int id) 
    { 
     contact contact = db.contacts.Find(id); 
     if (contact == null) 
     { 
      return NotFound(); 
     } 

     return Ok(contact); 
    } 

谢谢你们,

+2

你在哪里得到这个错误?指向正确的代码行会有很大帮助。但是,错误的意思是,在某些时候,代码需要一个HttpCompletionOption,而你正在将它传递给一个int。从外观上看,它可能是你对client.GetAsync的调用,你似乎在传递一个字符串和一个不是有效重载的int(参见https://msdn.microsoft.com/zh-cn/library/system .net.http.httpclient.getasync(v = vs.118).aspx的方式来调用它)。 – Chris

HttpResponseMessage response = client.GetAsync("api/contacts/"+contactid.ID).ContinueWith((Posttank) => Posttank.Result.EnsureSuccessStatusCode()); 

只是尝试这样的..