我有ASP.NET MVC 6应用程序,该应用程序调用了一些外部Web服务。我使用此指南:http : //www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client这是代码:
using System;
using System.Net.Http;
using System.Net.Http.Headers;
namespace TestService.Web.Code
{
internal class ServiceProxy
{
internal string Get(string predicate)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:8001/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync(string.Format("TestService/LookupService" +
"/GetCountries?term={0}", predicate)).Result;
if (response.IsSuccessStatusCode)
{
var answer = response.Content.ReadAsStringAsync().Result;
return answer;
}
return string.Empty;
}
}
}
}
但是,这是意外的问题:构建项目后出现3个错误:
错误CS0246找不到类型或名称空间名称'HttpClient'
错误CS0246找不到类型或名称空间名称'MediaTypeWithQualityHeaderValue'
错误CS0246找不到类型或名称空间名称'HttpResponseMessage'
看起来像Microsoft.AspNet.WebApi.Client软件包版本与我的KRE版本不兼容。
我对吗?我该如何解决呢?
这是project.json的内容:
{
"webroot": "wwwroot",
"version": "1.0.0-*",
"dependencies": {
"Microsoft.AspNet.Server.IIS": "1.0.0-beta3",
"Microsoft.AspNet.Mvc": "6.0.0-beta3",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta3",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta3",
"Microsoft.AspNet.Security.Cookies": "1.0.0-beta3",
"System.Net.Http": "4.0.0-beta-22605",
"Microsoft.AspNet.WebApi.Client": "5.2.3",
"Microsoft.AspNet.Mvc.WebApiCompatShim": "6.0.0-beta3"
},
"frameworks": {
"aspnet50": {
"frameworkAssemblies": {
"System.Net.Http": "4.0.0.0",
"System.Net": "4.0.0.0"
}
},
"aspnetcore50": {
"dependencies": {
"System.Net.Http": "4.0.0-beta-22605"
}
}
},
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
],
"bundleExclude": [
"node_modules",
"bower_components",
"**.kproj",
"**.user",
"**.vspscc"
]
}
你基本上是对的。在您的示例中,Microsoft.AspNet.WebApi.Client`程序包同时用于clrcore和clr运行时。该软件包只能用于clr运行时。
使用最新的更改(重命名及所有其他功能),这是一个工作片段:
using System;
using System.Net.Http;
using System.Net.Http.Headers;
public class Program
{
public void Main(string[] args)
{
}
internal class ServiceProxy
{
internal string Get(string predicate)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:8001/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync(string.Format("TestService/LookupService" +
"/GetCountries?term={0}", predicate)).Result;
if (response.IsSuccessStatusCode)
{
var answer = response.Content.ReadAsStringAsync().Result;
return answer;
}
return string.Empty;
}
}
}
}
project.json:
{
"dependencies": {
},
"frameworks": {
"dnx451": {
"dependencies": {
"Microsoft.AspNet.WebApi.Client": "5.2.3"
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句