2012-01-17 12 views
7

私はASP.Net MVC 4 Developer PreviewでDotNetOpenAuthサンプルを試しています。MVC 4.0のDotNetOpenAuth

私は正常に私のテストページから私のアクションを呼び出すが、理由コードの1行の奇妙な問題に実行することができます:私は、コードの問題の行をコメントアウトし、この前の1のコメントを解除した場合

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 

、私はもうランタイムエラーが表示されません。

は、これまで私が試してみました:

<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)正しい名前空間を持っている:

1)私が正しいリダイレクトを持っていることを確認

using DotNetOpenAuth.OpenId.Extensions.AttributeExchange; 
using DotNetOpenAuth.OpenId.Extensions; 

それはように私には思えますDotNetOpenAuth dllがMVC V 1.0.0に対してコンパイルされ、バインドリダイレクトが機能していないか、拡張メソッドが廃止予定のメソッドに対して機能していた可能性があります。

MVCバージョン:4.0.0.0 DotNetOpenAuthバージョン:3.4.7.11121

MVC 4でこの作業を取得上の任意の助けいただければ幸いです。 MVCエラー画面イメージは、さらに以下の通りです:

Image of Error Screen

更新 私はAsActionResultは、拡張メソッドは、.NET 4.0と互換性がないかもしれないので、問題の原因であることがわかりました。 request.RedirectingResponseからOutgoingWebResponseオブジェクトを取得できますが、それをActionResultにキャストする方法はわかります

+0

サンプルコードは、私が見ることができるMVC4で動作するOpenIdを取得しますか?私は、プロバイダーボタンを呼び出すと、イメージパスからJSエラーまで、さまざまな問題に遭遇しています。 – Picflight

答えて

6

バインディングリダイレクトが壊れているようです。 System.Web.Mvcが2回表示されていることに注目してください。最初のものが正しいように見えるので、2番目のものを削除してみてください。

はい、DNOAはMVC 1.0に対してビルドされています。これは、MVCのすべてのバージョン(該当するリダイレクトが指定されている場合)に対して機能するよう設計されています。これは純粋にMVCバージョンのもので、.NET 4.0のものではありません。

+0

あなたは本当に鋭い目を持っています。ありがとうございました!!私は狂ったと思った。 –

+0

ありがとう、ありがとう、ありがとう、ありがとう)ありがとう、ありがとう、ありがとう、ありがとう、ありがとう、ありがとうありがとうございました:)私は同じ問題を、mvc3のために、これは私のために働いていた ""。 – labroo

関連する問題