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}]} 

仍然没有值被正确地处理

回答

0

看起来像问题是,将contentType必须是=“应用/ JSON;字符集= UTF-8" 让我感动的服务是从同一产地和改变了的contentType和它的工作如预期。

将调查原因的contentType变化是导致问题与Thinktecture

+0

看起来它是很容易配置Thinktecture以接受不同的contentType。http://encosia.com/using-cors-to-access-asp-net-services-across-domains/ – BigUnit5150

相关问题