Tôi đã thử các mẫu DotNetOpenAuth với ASP.Net MVC 4 Developer Preview.DotNetOpenAuth với MVC 4.0
Tôi có thể gọi thành công hành động của tôi từ trang thử nghiệm của tôi, nhưng chạy vào một vấn đề xa lạ vì một dòng mã:
var request = _openid.CreateRequest(openIdUrl);
var fetch = new FetchRequest();
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
fetch.Attributes.AddRequired(WellKnownAttributes.Name.First);
fetch.Attributes.AddRequired(WellKnownAttributes.Name.Last);
request.AddExtension(fetch);
//return RedirectToAction("Login");
return request.RedirectingResponse.AsActionResult(); // <-- This is the line throwing the error
Nếu tôi nhận xét ra dòng vi phạm mã và bỏ một trước khi điều này , Tôi không thấy lỗi thời gian chạy nữa.
Cho đến nay tôi đã cố gắng:
1) Đảm bảo rằng tôi có nên chuyển hướng chính xác:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
</dependentAssembly>
</assemblyBinding>
<legacyHMACWarning enabled="0" />
</runtime>
2) Có không gian tên chính xác:
using DotNetOpenAuth.OpenId.Extensions.AttributeExchange;
using DotNetOpenAuth.OpenId.Extensions;
Dường như với tôi rằng Dll DotNetOpenAuth được biên dịch với MVC V 1.0.0 và chuyển hướng ràng buộc là không hoạt động hoặc phương pháp mở rộng có thể hoạt động dựa trên phương pháp không được chấp nhận.
MVC Version: 4.0.0.0 DotNetOpenAuth Version: 3.4.7.11121
Bất kỳ giúp đỡ về việc này làm việc với MVC 4 sẽ được đánh giá rất nhiều. Những hình ảnh màn hình báo lỗi MVC là tiếp tục dưới đây:
Cập nhật tôi thấy rằng AsActionResult là nguyên nhân của vấn đề này, có lẽ bởi vì phương pháp mở rộng không tương thích với Net 4.0. Tôi có thể nhận đối tượng OutgoingWebResponse từ request.RedirectingResponse nhưng biết cách truyền nó tới ActionResult
Là mã mẫu của bạn để có được OpenId làm việc với MVC4 ở đâu đó tôi có thể thấy. Tôi đang chạy vào nhiều vấn đề khác nhau, từ đường dẫn hình ảnh đến lỗi JS khi tôi gọi nút nhà cung cấp. – Picflight