【发布时间】:2017-02-05 23:54:01
【问题描述】:
我有一个 APIController 方法,如下所示。基本上我需要验证 API 响应。所以它是 API 调用中的 API 调用。
public class DCController : ApiController
{
[HttpPost]
public HttpResponseMessage SampleMethod(string url)
{
var uri = new Uri(url);
var baseAddress = uri.GetLeftPart(System.UriPartial.Authority);
var apiAddress = url.Replace(baseAddress + "/", "");
var responseString = string.Empty;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(baseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.GetAsync(apiAddress).Result;
if (response.IsSuccessStatusCode)
{
responseString = response.Content.ReadAsStringAsync().Result;
}
}
if (!string.IsNullOrEmpty(responseString) && responseString.ToString().Validate())
{
return Request.CreateResponse(HttpStatusCode.OK, "Validated");
}
else
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid");
}
}
问题: 1.请求对象在返回行中为空。 2. 如果我尝试创建一个请求对象 -
var request = new HttpRequestMessage();
它抛出以下错误:
“System.InvalidOperationException”类型的异常发生在 System.Web.Http.dll 但未在用户代码中处理
附加信息:请求没有关联的 配置对象或提供的配置为空。
不确定我需要添加哪些设置。我对使用 API 比较陌生。任何帮助表示赞赏。
【问题讨论】:
-
您在实际运行代码或单元测试时是否遇到该错误?
-
您还应该考虑使该方法异步/等待
-
@nkosi 我通过 ajax 查询调用 API 方法,方法是保持 API 项目通过 localhost 运行并通过 localhost:portnumber URL 调用 API 方法...我收到此错误,因为它需要我API 项目调试器..希望这是有道理的...
-
@Nkosi 我会研究 async/await ..
-
您还应该检查您的启动以确保您已正确配置 HttpConfiguration
标签: asp.net-web-api httprequest httpresponse asp.net-apicontroller