2012-01-17 13 views
7

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:

Image of Error Screen

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

+0

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

Trả lời

6

Dường như chuyển hướng ràng buộc của bạn bị hỏng. Lưu ý cách System.Web.Mvc xuất hiện hai lần? Hãy thử xóa cái thứ hai làm cái đầu tiên trông đúng.

Có, DNOA được xây dựng dựa trên MVC 1.0 và đây là thiết kế sao cho nó hoạt động với tất cả các phiên bản của MVC (được chuyển hướng thích hợp). Đây hoàn toàn là một phiên bản MVC - không phải là một điều .NET 4.0.

+0

Bạn có một con mắt thực sự quan tâm. Cảm ơn bạn!! Tôi nghĩ tôi đã phát điên. –

+0

Cảm ơn bạn Cảm ơn bạn Cảm ơn bạn :) .. Tôi đã nhận được cùng một vấn đề, đối với mvc3, điều này làm việc cho tôi "". – labroo