Comment déboguer MVC 4 de l'API des routes?
J'ai un WP7 jeu qui utilise RESTsharp pour communiquer avec mon MVC4 Reposant serveur, mais j'ai souvent des problèmes pour le faire les demandes de travail et, par conséquent, je veux debug où il échoue.
C'est un exemple où le Constructeur sur mon GameController
est touché, mais le Post
méthode n'est pas touché et je ne comprends pas pourquoi.
Code Client:
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) =>
{});
}
Code serveur:
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);
}
Mes itinéraires sont comme ça
routes.MapHttpRoute(
name: "gameAPI",
routeTemplate: "api/game/{gameId}",
defaults: new
{
controller = "game",
gameId = RouteParameter.Optional
}
);
- haacked.com/archive/2008/03/13/url-routing-debugger.aspx
- Je ne peux pas voir le débogueur de l'information lorsque j'accède à mon service RESTful par le biais d'un WP7 émulateur?
Vous devez vous connecter pour publier un commentaire.
RouteDebugger est bon pour essayer de comprendre qui de voies/ne sera pas touché.
http://nuget.org/packages/routedebugger
Une autre façon est d'ajouter un gestionnaire d'événement dans
Global.asax.cs
pour ramasser la demande entrante, puis regardez la route des valeurs dans le VS débogueur. Remplacer leInit
méthode comme suit:Puis définissez un point d'arrêt dans
showRouteValues
et de regarder le contenu derouteData
.Garder à l'esprit que, dans un projet d'API Web, Http routes sont en
WebApiConfig.cs
, pasRouteConfig.cs
.Vous pouvez essayer ASP.NET Web API Route Débogueur. Il est écrit pour le Web Api. https://trocolate.wordpress.com/2013/02/06/introducing-asp-net-web-api-route-debugger/
http://nuget.org/packages/WebApiRouteDebugger/
Il y a plus de possibilités pour tester les routes. Vous pouvez soit essayer de tests manuels ou automatisés dans le cadre de tests unitaires.
Test manuel:
De tests automatisés:
Est GameController découlant de ApiController ?
Êtes-vous à l'aide de WebApi ?
Si non, alors je pense que le "/api/" est réservé pour les nouveaux WebApi fonctionnalité. Essayez de changer votre routage et du contrôleur nom de "gameapi"
Toutefois, si vous utilisez WebApi.
Puis retirer l'api de yor BaseUrl