0
我使用的是asp.net 4.5,并具有以下控制器。无法获取ASP.Net控制器来处理JSON发布数据
public class AccountController : Controller
{
//
// POST: /Account/JsonLogin
[System.Web.Mvc.AllowAnonymous]
[System.Web.Mvc.HttpPost]
public JsonResult Login(LogIndto loginRequest)
{
if (loginRequest.Email == null)
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized));
return null;
}
}
这里是基于提琴手我的DTO
public class LogIndto
{
public String Email { get; set; }
public String Password { get; set; }
public Boolean RememberMe { get; set; }
}
这就是被贴到我的服务
POST host/Account/Login HTTP/1.1
Host: host
Connection: keep-alive
Content-Length: 71
Accept: application/json, text/javascript, */*; q=0.01
Origin: clientDifferentThanHost
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer:clientdifferentThanHost/?
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
{"Email":"[email protected]","Password":"afasdf","RememberMe":false}
我希望ASP.Net的JSON转换为C#对象而是loginRequest中的所有数据都为null(除了默认值为false的布尔值)
这里是我正在使用的JavaScript
this.Login = function() {
var dto = JSON.stringify({Email:"[email protected]",Password:"avafa",RememberMe:false});
$.ajax({
url: app.homeUrl + "Account/Login",
data: dto,
success: self.loginSuccess,
processData: false,
type: "Post",
dataType: "json",
traditional: true
}).fail(self.loginFail)
;
};
当我尝试设置contentType:“application/json; charset = utf-8“这个请求永远不会对服务产生影响,我认为这是我使用的Thinktecture.IdenityModel交叉源代码包中的一个错误,但是一旦我能够完成这个工作,它就会尝试着解决这个问题。帮助将不胜感激。我已经使用招我已经能够通过以下以及
得到这在过去工作,我敢肯定,我只是需要一个第二双眼睛帮助。Content-Type: application/json; charset=UTF-8
Referer: http://localhost:8900/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
{"loginRequest":[{"Email":"[email protected]","Password":"avafa","RememberMe":false}]}
仍然没有值被正确地处理
看起来它是很容易配置Thinktecture以接受不同的contentType。http://encosia.com/using-cors-to-access-asp-net-services-across-domains/ – BigUnit5150