ASP.NET webforms 프로젝트에서 애트리뷰트 (.NET 4.5)를 통해 메소드를 호출하는 웹 api2 컨트롤러를 추가하려고합니다. 작동하지 않기 때문에 라우팅을 잘못해야합니다.GET 방법이 두 개 이상입니까?
내가이 예에서 일하고 있어요 :
을이 작동 다음 WebApiConfig.cs에서
:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
// this enables attribute routes
config.MapHttpAttributeRoutes();
// this uses convention-based routes ("Get" as a default)
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
을 ClinicianController.cs에서 :
Clinician[] clinicians = new Clinician[]
{
new Clinician { Id = "1-552", Text = "EVERY MD,JOYCE" },
new Clinician { Id = "1-598", Text = "BODY MD,THOMAS" },
new Clinician { Id = "1-642", Text = "WANG MD,STANLEY R" },
new Clinician { Id = "1-893", Text = "CHUNG MD,JANAHN C" },
new Clinician { Id = "1-914", Text = "TO MD,J R" },
new Clinician { Id = "1-921", Text = "NIGHT MD,BARRY J" }
};
public IEnumerable<Clinician> GetAllClinicians()
{
return clinicians;
}
public IHttpActionResult Get(string id)
{
var clinician = clinicians.FirstOrDefault((p) => p.Id == id);
if (clinician == null)
{
return NotFound();
}
return Ok(clinician);
}
//NOPE
[Route("clinician/{name}/GetByName")]
//NOPE
[HttpGet]
public IHttpActionResult GetByName(string name)
{
var clinician = clinicians.FirstOrDefault((p) => p.Text == name);
if (clinician == null)
{
return NotFound();
}
return Ok(clinician);
}
그리고 자바 스크립트 : 위치 0 과에서 JSON에 예기치 않은 토큰 < :
구문 에러 : 나는 ID = "밤"에
$.getJSON(uri + '/' + id + '/GetByName')
전화
$(document).ready(function() {
// Send an AJAX request
$.getJSON(uri)
.done(function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
$('<li>', { text: formatItem(item) }).appendTo($('#clinicians'));
});
});
});
function formatItem(item) {
return item.Id + ' : ' + item.Text;
}
function find() {
var id = $('#mgpId').val();
// NOPE var jqxhr = $.getJSON(uri + '/' + id + '/GetByName')
var jqxhr = $.getJSON(uri + '/' + id)
.done(function (data) {
$('#clinician').text(formatItem(data));
})
.fail(function (jqXHR, textStatus, err) {
$('#clinician').text('Error: ' + err);
});
}
,이 오류를 반환 codebehind는 GetByName 메서드를 절대 입력하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
업데이트 : 나는 그것이 ClinicianController에서 가져 오기 방법 안타 예상대로 임상의 객체를 반환 해서 getJSON ('API/임상/1-921')을 호출하는 경우, VS2015에서 디버깅 할 때. GetByName 메서드를 사용하여 얻을 수 없으므로 라우팅이 잘못되었습니다.
이 일어나고 몇 가지 예외가 아마와 그것의 반환 HTML 또는 상
RouteParameter.Optional
로name
를 추가 할 필요가 시도 XML 대신 JSON. 브라우저에서 F12 키를 누르고 네트워크 트래픽을 살펴보십시오. 그것은 당신에게 응답을 보여 주어야합니다. –