从 jquery 访问这个 web api 方法的最佳方法是什么
只需进行 ajax 调用。
var url = www.example.com/api/user;
$.ajax({
type: 'GET',
url: url,
success: function(userValue) {
// Do something with your user info...
},
error: function(error) {
// Something went wrong. Handle error.
}
});
让你的控制器返回值。
public class UserController : ApiController
{
[HttpGet] // For clarity only
public object Get()
{
// return your object.
return session["userID"];
}
}
要获取控制器的 url,您可以在视图中使用它。
Url.HttpRouteUrl("DefaultApi", new {controller = "UserController "})})
DefaultApi 是在您的路由表中定义的路由名称(通常在 RouteConfig.cs 中)。
编辑:
关于对会话的访问,有很多方法可以绕过它。看看这个问题,我想你会解决的。 Accessing Session Using ASP.NET Web API
或者这个教程:
http://www.codeproject.com/Tips/513522/Providing-session-state-in-ASP-NET-WebAPI
public class SessionableControllerHandler : HttpControllerHandler, IRequiresSessionState
{
public SessionableControllerHandler(RouteData routeData)
: base(routeData)
{}
}
public class SessionStateRouteHandler : IRouteHandler
{
IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext)
{
return new SessionableControllerHandler(requestContext.RouteData);
}
}
最后将其注册到您的路线中:
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
).RouteHandler = new SessionStateRouteHandler();
或将其添加到您的 Global.asax.cs
protected void Application_PostAuthorizeRequest()
{
System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
}