编辑1:其他控制器
public class identityController : ApiController
{
[HttpGet]
public async Task<IHttpActionResult> getfullname(string firstName)
{
string name = firstName;
return Ok(name);
}
}
我创建了一个使用其他解决方案中的API的控制器。我在控制器中使用的方法如下所示:
public class GetNameController : ApiController
{
[HttpGet]
public async Task<IHttpActionResult> CalculatePrice(string firstName)
{
string _apiUrl = String.Format("api/identity/getfullname?firstName={0}", firstName);
string _baseAddress = "http://testApp.azurewebsites.net/";
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_baseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(_apiUrl);
if (response.IsSuccessStatusCode)
{
return Ok(response);
}
}
return NotFound();
}
的结果response.IsSuccessStatusCode
始终为false
。当我检查response
值时,我看到以下结果:
{
StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Connection: close
Date: Thu, 21 Jul 2016 12:28:21 GMT
Server: Microsoft-HTTPAPI/2.0
Content-Length: 334
Content-Type: text/html; charset=us-ascii
}
}
我可能会缺少什么?
string _apiUrl = String.Format("api/identity/{0}", firstName);
这是假设您的url正确,并且您的testapp已启动并正在运行。即使当我点击它时,天蓝色告诉我您的应用程序已停止。您需要先启动您的应用,然后将字符串_apiUrl更改为上面的建议。
http://testapp.azurewebsites.net/api/identity/getfullname?firstName=steve
给我这个讯息
错误403-此Web应用程序已停止。
您尝试访问的网络应用当前已停止,并且不接受任何请求。请尝试重新加载页面或不久后再次访问它。
如果您是网络应用管理员,请在此处找到常见的403错误情况和解决方案。有关其他疑难解答工具和建议,请访问Azure门户。
因此,identity
控制器中发生了几件事。
getFullName
。由于单词get
是函数的名称。任何httpget
请求都将自动路由到该功能。从而使得[HttpGet]
冗余。这仅当有工作1,仅1 httpget
中控制器的要求。如果有多个,则需要像完成操作一样完全限定网址[httpget]
您正在使用method属性,因此我可以假设您正在使用webapi2。在这种情况下,并且您在控制器参数中使用了原语,则不必完全限定调用中的参数名称。?firstname={0}
更改为/{0}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句