MVC 4 API 경로를 어떻게 디버깅합니까?
RESTsharp를 사용하여 MVC4 RESTful 서버와 통신하는 WP7 게임이 있지만 종종 작동하는 요청을 만드는 데 문제가 있으므로 실패한 부분을 디버깅하고 싶습니다.
이것은 내 생성자 GameController
가 맞았지만 Post
메서드가 맞지 않았고 이유를 이해하지 못하는 예입니다.
클라이언트 코드 :
public void JoinRandomGame()
{
client = new RestClient
{
CookieContainer = new CookieContainer(),
BaseUrl = "http://localhost:21688/api/",
};
client.Authenticator = GetAuth();
RestRequest request = new RestRequest(Method.POST)
{
RequestFormat = DataFormat.Json,
Resource = "game/"
};
client.PostAsync(request, (response, ds) =>
{});
}
서버 코드 :
public void Post(int id)
{
if (ControllerContext.Request.Headers.Authorization == null)
{
//No auth
}
if (!loginManager.VerifyLogin(ControllerContext.Request.Headers.Authorization.Parameter))
{
//Failed login
}
string username;
string password;
LoginManager.DecodeBase64(ControllerContext.Request.Headers.Authorization.Parameter, out username, out password);
gameManager.JoinRandomGame(username);
}
내 경로는 이렇게
routes.MapHttpRoute(
name: "gameAPI",
routeTemplate: "api/game/{gameId}",
defaults: new
{
controller = "game",
gameId = RouteParameter.Optional
}
);
RouteDebugger는 어떤 라우트가 적중 될 것인지 아닌지 알아내는 데 유용합니다.
http://nuget.org/packages/routedebugger
또 다른 방법은 이벤트 핸들러를 추가 Global.asax.cs
하여 들어오는 요청을 선택한 다음 VS 디버거에서 경로 값을 보는 것입니다. Init
다음과 같이 메서드를 재정의합니다 .
public override void Init()
{
base.Init();
this.AcquireRequestState += showRouteValues;
}
protected void showRouteValues(object sender, EventArgs e)
{
var context = HttpContext.Current;
if (context == null)
return;
var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(context));
}
그런 다음 중단 점을 설정하고 showRouteValues
의 내용을 확인 routeData
합니다.
Keep in mind that in a Web API project, the Http routes are in WebApiConfig.cs
, not RouteConfig.cs
.
You can try ASP.NET Web API Route Debugger. It is written for Web Api. https://trocolate.wordpress.com/2013/02/06/introducing-asp-net-web-api-route-debugger/ http://nuget.org/packages/WebApiRouteDebugger/
There are more possibilities for testing the routes. You can try either manual testing or automated as part of unit tests. Manual testing:
Automated testing:
Is GameController deriving from ApiController ? Are you using WebApi ?
If not then i think the "/api/" is reserved for new WebApi feature. Try changing your routing and controller name to "gameapi"
If however you are using WebApi.
Then remove api from yor BaseUrl
client = new RestClient
{
CookieContainer = new CookieContainer(),
BaseUrl = "http://localhost:21688/",
};
참고URL : https://stackoverflow.com/questions/11473038/how-do-you-debug-mvc-4-api-routes
'IT Share you' 카테고리의 다른 글
장고 관리자의 양식 필드 설명 (0) | 2020.11.07 |
---|---|
내 애플리케이션에서 Android가 선택한 레이아웃을 어떻게 감지 할 수 있습니까? (0) | 2020.11.07 |
Python / IPython 인터프리터에서 단일 밑줄 _에 값 할당 (0) | 2020.11.07 |
라 라벨 5.0 설치 방법 (0) | 2020.11.07 |
spring-boot 및 angularjs가 작동하지 않는 CORS (0) | 2020.11.07 |