"api/ping.v1"과 같은 URL에 응답해야하는 웹 응용 프로그램을 개발해야합니다 (URL은 외부에서 지정되며 옵션을 변경할 수 없습니다). 문제가 있습니다. HttpControllerSelector 내 컨트롤러 클래스를 찾을 수 없습니다. 나는 항상 '찾을 수 없음'이라는 결과를 얻습니다. 내 컨트롤러 클래스를 올바르게 찾을 수 있도록 라우팅 구성 방법을 알고 있습니다.HttpControllerSelector가 컨트롤러 클래스를 찾지 못했습니다.
컨트롤러 클래스 :
namespace WebApplication1.Controllers
{
public class PingController : ApiController
{
[HttpPost, Route("api/ping.v1")]
public PingResponse HandleRequest(PingRequest request)
{
// TODO: Handle request and create Response object.
return new PingResponse();
}
}
}
WebApiConfig.cs :
namespace WebApplication1
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web-API-Konfiguration und -Dienste
// Web-API-Routen
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
PingRequest.cs :
namespace WebApplication1.Models
{
public class PingRequest
{
[StringLength(20)]
public string UserDms { get; set; }
[Required, StringLength(7)]
public string Ipn { get; set; }
[Required, StringLength(8)]
public string DealerId { get; set; }
[Required, StringLength(20)]
public string WorkshopPartshopId { get; set; }
}
}
클래스 PingResponse 여기에 지금까지 한 일을 몇 가지 코드가있다 완전히 비어있어서 여기에이 수업을 게시하지 않습니다.
웹 응용 프로그램을 테스트에 대한 나의 HTML 페이지 :
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Ping Test</title>
</head>
<body>
<div>
<h2>Ping</h2>
<input type="button" value="Ping" onclick="ping();" />
<p id="pingResult"/>
</div>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
<script>
function ping() {
$.post('api/ping.v1', {userDms: "wb", ipn: "Ipn", dealerId: "dealer", workshopPartshopId: "wshop"})
.done(function (data) {
$('#pingResult').text(JSON.stringify(data.response)).css("color", "black");
})
.fail(function (jqXHR, textStatus, err) {
$('#pingResult').text('Error: ' + err);
});
}
</script>
</body>
</html>
"핑" . 버튼 핑을 클릭하면 "오류 : 찾을 수 없음"이라는 메시지가 나타납니다.
내 라우팅 구성에 문제가있는 것을 누군가가 올바른 방향으로 가리킬 수 있기를 바랍니다.
안부 마이클
문제는 귀하의 URL이 아닙니다. 그건 '.' 귀하의 API. 그것은 확장 및 정적 파일 요청과 같은 사용으로 간주됩니다. https://stackoverflow.com/questions/20998816/dot-character-in-mvc-web-api-2-for-request-such-as-api-people-staff-45287 – SharmaPattar
왜 내 대답을 반복합니까? ? :) – CodeFuller