Je viens de mettre à jour mon projet MVC2 pour exécuter MVC3 (RC). Tout fonctionne comme prévu sauf pour un problème.ASP.NET MVC3 - ActionResult rendu DotNetOpenAuth WebResponse en tant que chaîne
Je suis en cours d'exécution DotNetOpenAuth, mais quand je vais à authentifier, ma page rend la chaîne
DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult
au lieu de l'authentification (qui a travaillé dans l'application MVC2)
J'ai trouvé cette question elsewhere on SO, et j'ai fait ce qui a été suggéré, mais en vain.
Voici un extrait de mon web.config
</configSections>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc"
publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="2.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.web.webPages.razor>
Ce qui pourrait bien être la cause de ce problème?
Si elle aide, voici le code du contrôleur qui travaillait avant MVC3
''# <ValidateInput(False)> _ ''# this code is commented out so that it displays properly on StackOverflow - It's not really commented out in the project.
Public Function Authenticate(ByVal go As String) As ActionResult
Dim response As IAuthenticationResponse = openid.GetResponse()
If response Is Nothing Then
''# Stage 2: user submitting Identifier
Dim id As Identifier
If Identifier.TryParse(Request.Form("openid_identifier"), id) Then
Try
Return openid.CreateRequest(Request.Form("openid_identifier")).RedirectingResponse.AsActionResult()
Catch ex As ProtocolException
ViewData("Message") = "Woops! " & ex.Message
Return View("Login")
End Try
Else
ViewData("Message") = "Woops! Invalid identifier"
Return View("Login")
End If
Else
''# Stage 3: OpenID Provider sending assertion response
Select Case response.Status
Case AuthenticationStatus.Authenticated
If Not OpenIDService.IsOpenIdAssociated(response.ClaimedIdentifier) Then
''# All of this happens if the user logging in does
''# not currently have an account associated with
''# their OpenId. We probably want to handle this a
''# little differently by sending them to a view that
''# allows them to confirm account creation or try
''# again.
''# TODO: Create an Authenticate View and a CreateUser ActionResult (without a View)
UserService.AddUser(response.ClaimedIdentifier, response.FriendlyIdentifierForDisplay)
UserService.SubmitChanges()
ActivityLogService.AddActivity(OpenIDService.GetOpenId(response.ClaimedIdentifier).UserID, _
ActivityLog.LogType.UserAdded, _
HttpContext.Request.UserHostAddress)
Else
ActivityLogService.AddActivity(OpenIDService.GetOpenId(response.ClaimedIdentifier).UserID, _
ActivityLog.LogType.UserLogin, _
HttpContext.Request.UserHostAddress)
End If
''# Again, we want to make sure to associate the users
''# actions with an entry in the ActivityLog for further
''# use with Badges
ActivityLogService.SubmitChanges()
''# Create the authentication cookie. This cookie
''# includes the AuthUserData information in the
''# userData field of the FormsAuthentication Cookie.
Dim authUser As Authentication.AuthUserData = New Authentication.AuthUserData(OpenIDService.GetOpenId(response.ClaimedIdentifier).User)
HttpContext.Response.Cookies.Add(Authentication.CustomAuthentication.CreateAuthCookie(response.ClaimedIdentifier, _
authUser, _
True))
authUser = Nothing
If Not String.IsNullOrEmpty(go) Then : Return Redirect(go)
Else : Return RedirectToAction("Index", "Events")
End If
Case AuthenticationStatus.Canceled
ViewData("Message") = "Canceled at provider"
Return View("Login")
Case AuthenticationStatus.Failed
ViewData("Message") = response.Exception.Message
Return View("Login")
End Select
End If
Return New EmptyResult()
End Function
Vous pouvez mise à niveau vers la dernière version de DotNetOpenAuth, car la version actuelle est v3.4.5, mais elle ne résoudra pas ce problème. DotNetOpenAuth se compile contre MVC 1.0 afin qu'il fonctionne pour les installations plus anciennes. Redirections de liaison est la bonne solution ici. –
merci merci! Cela m'embêtait depuis un certain temps. l'ajouter à mon web.config a fait l'affaire. –