[英]WebApi Not Working When Deployed to Azure Website
My WebApi works perfectly on my local machine, but when published to Azure (azure website) I get the following: 我的WebApi在我的本地机器上完美运行,但是当发布到Azure(azure网站)时,我得到以下内容:
No HTTP resource was found that matches the request URI ' http://myazurewebsite.domain/Api/Zipcode/GetLatLong?zip5=23423 '.
没有找到与请求URI匹配的HTTP资源' http://myazurewebsite.domain/Api/Zipcode/GetLatLong?zip5 = 23423 '。
But on localhost it works lovely. 但是在localhost上,它很可爱。
http://localhost/Api/Zipcode/GetLatLong?zip5=20024
{"Latitude":38.89,"Longitude":-77.03}
I have a modified WebApi Route: 我有一个修改过的WebApi路线:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultPublicApi",
routeTemplate: "Api/{controller}/{action}/{id}/{format}",
defaults: new { id = RouteParameter.Optional, format = RouteParameter.Optional}
);
}
}
ApiController Class: ApiController类:
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Project.Geography.Services;
using Project.WebPublic.Filters;
namespace Project.WebPublic.Controllers.WebApi
{
public class ZipCodeController : ApiController
{
private readonly ZipCodeService _zipCodeService;
public ZipCodeController(ZipCodeService zipCodeService)
{
_zipCodeService = zipCodeService;
}
[HttpGet]
[TransactionFilter]
public HttpResponseMessage GetLatLong(string zip5)
{
if (zip5.Length != 5)
return Request.CreateResponse(HttpStatusCode.BadRequest, "Zip Code Length Not Equal to 5");
var zip = _zipCodeService.GetByZip5(zip5);
if (zip == null)
return Request.CreateResponse(HttpStatusCode.NotFound, "Could not find Zip Code in Database");
var latlong = new
{
Latitude = zip.Latitude,
Longitude = zip.Longitude
};
return Request.CreateResponse(HttpStatusCode.OK, latlong);
}
}
}
Try adding Route as below 尝试添加如下路线
[HttpGet]
[TransactionFilter]
[Route("api/GetLatLong")]
public HttpResponseMessage GetLatLong(string zip5)
{
if (zip5.Length != 5)
return Request.CreateResponse(HttpStatusCode.BadRequest, "Zip Code Length Not Equal to 5");
var zip = _zipCodeService.GetByZip5(zip5);
if (zip == null)
return Request.CreateResponse(HttpStatusCode.NotFound, "Could not find Zip Code in Database");
var latlong = new
{
Latitude = zip.Latitude,
Longitude = zip.Longitude
};
return Request.CreateResponse(HttpStatusCode.OK, latlong);
}
And then your route config would be as below 然后你的路线配置如下
public static class WebApiConfig
{
/// <summary>
/// Register the http configuration for web API.
/// </summary>
/// <param name="config">The http configuration instances</param>
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.