Mec*_*h0z 68 .net c# rest asp.net-mvc asp.net-mvc-4
我有一个WP7游戏,它使用RESTsharp与我的MVC4 RESTful服务器进行通信,但是我经常遇到使请求有效的问题,因此我想调试它失败的地方.
这是一个示例,其中我的构造函数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) =>
{});
}
Run Code Online (Sandbox Code Playgroud)
服务器代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
我的路线是这样的
routes.MapHttpRoute(
name: "gameAPI",
routeTemplate: "api/game/{gameId}",
defaults: new
{
controller = "game",
gameId = RouteParameter.Optional
}
);
Run Code Online (Sandbox Code Playgroud)
Pau*_*ans 98
另一种方法是添加一个事件处理程序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));
}
Run Code Online (Sandbox Code Playgroud)
然后设置一个断点showRouteValues并查看其中的内容routeData.
请记住,在Web API项目中,Http路由WebApiConfig.cs不在RouteConfig.cs.
| 归档时间: |
|
| 查看次数: |
43127 次 |
| 最近记录: |