Hiện tại tôi đang phát triển một máy chủ ủy quyền OAuth2 sử dụng phiên bản CTP DotNetOpenAuth. Máy chủ ủy quyền của tôi nằm trong asp.net MVC3 và dựa trên mẫu được cung cấp bởi thư viện. Mọi thứ hoạt động tốt cho đến khi ứng dụng đạt tới điểm mà người dùng ủy quyền cho ứng dụng khách hàng.PrepareResponse() AsActionResult() ném ngoại lệ không được hỗ trợ DotNetOpenAuth CTP
Có một hành động bên trong điều khiển OAuth của tôi mà sẽ chăm sóc của quá trình cấp phép, và rất giống với hành động tương đương trong mẫu:
[Authorize, HttpPost, ValidateAntiForgeryToken]
public ActionResult AuthorizeResponse(bool isApproved)
{
var pendingRequest = this.authorizationServer.ReadAuthorizationRequest();
if (pendingRequest == null)
{
throw new HttpException((int)HttpStatusCode.BadRequest, "Missing authorization request.");
}
IDirectedProtocolMessage response;
if (isApproved)
{
var client = MvcApplication.DataContext.Clients.First(c => c.ClientIdentifier == pendingRequest.ClientIdentifier);
client.ClientAuthorizations.Add(
new ClientAuthorization
{
Scope = OAuthUtilities.JoinScopes(pendingRequest.Scope),
User = MvcApplication.LoggedInUser,
CreatedOn = DateTime.UtcNow,
});
MvcApplication.DataContext.SaveChanges();
response = this.authorizationServer.PrepareApproveAuthorizationRequest(pendingRequest, User.Identity.Name);
}
else
{
response = this.authorizationServer.PrepareRejectAuthorizationRequest(pendingRequest);
}
return this.authorizationServer.Channel.PrepareResponse(response).AsActionResult();
}
Mỗi lần chương trình đạt được dòng này:
this.authorizationServer.Channel.PrepareResponse(response).AsActionResult();
Hệ thống ném một ngoại lệ mà tôi đã nghiên cứu không thành công. Ngoại lệ là như sau: Chỉ các nhà xây dựng và trình khởi tạo không có tham số mới được hỗ trợ trong LINQ to Entities.
Các stack trace: http://pastebin.com/TibCax2t
Điều duy nhất tôi đã làm khác so với mẫu là tôi đã sử dụng mã tiếp cận đầu tiên thực thể khuôn khổ của, một tôi nghĩ rằng mẫu được thực hiện bằng một nhà thiết kế mà autogenerated các thực thể.
Cảm ơn bạn trước.
Bạn đã xác định điều này? Tôi nhận được cùng một vấn đề. – fuzz