Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC Authorize属性验证JSON值_Asp.net Mvc_Attributes - Fatal编程技术网

Asp.net mvc MVC Authorize属性验证JSON值

Asp.net mvc MVC Authorize属性验证JSON值,asp.net-mvc,attributes,Asp.net Mvc,Attributes,我有以下代码,它可以在URL为/Projects/{userId}/{Id}的情况下正常工作 但是如果我用/Projects/和JSON值将值发布到页面上 {"userId":1234,"Id":145} 它不会拾取JSON值,UserId和Id都为null 代码如下 protected override bool AuthorizeCore(HttpContextBase httpContext) { int documentIdfound, userIdFound; int

我有以下代码,它可以在URL为/Projects/{userId}/{Id}的情况下正常工作

但是如果我用/Projects/和JSON值将值发布到页面上

{"userId":1234,"Id":145}
它不会拾取JSON值,UserId和Id都为null

代码如下

protected override bool AuthorizeCore(HttpContextBase httpContext)
{
    int documentIdfound, userIdFound;
    int? documentId = null;
    var documentIdRoute = httpContext.Request.RequestContext.RouteData.Values["Id"];

    if (int.TryParse((string)documentIdRoute, out documentIdfound))
        documentId = documentIdfound;

    //if we havent found the ProjectId in the RouteData check the querystring. Just in case
    if (documentId == null)
    {
        documentIdRoute = httpContext.Request.QueryString["Id"];
        if (int.TryParse((string)documentIdRoute, out documentIdfound))
            documentId = documentIdfound;
    }

    var userIdRoute = httpContext.Request.RequestContext.RouteData.Values["userId"];

    int.TryParse((string)userIdRoute, out userIdFound);

    var gi = GetCurrentUser();

    try
    {
        var userFound = gi.UserProfiles.Where(x => x.UserId == userIdFound).FirstOrDefault();
        if (userFound != null)
        {
            return gi.IsUserValid(userFound.UserId, documentId.Value);
        }
        else
            return false;
    }
    catch (Exception ex)
    {
        AddErrorToDB(ex);
        return false;
    }
}

尝试将参数值作为字符串发送:

{'userId':'1234','Id':'145'}


这将解决问题。

将json绑定到变量应该是一个模型绑定器问题。为此,您需要添加costum json模型绑定器