Próbuję zaimplementować uwierzytelnianie ASP.NET i autoryzację na bazie naszej istniejącej bazy danych. Mamy stronę internetową, która wzywa serwis internetowy do pobierania swoich danych. Aby korzystać z usługi internetowej, muszę podać nazwę użytkownika i hasło. Wiedząc o tym, postanowiłem wdrożyć IIdentity i IPrincipal do przechowywania zaszyfrowanego hasła i być w stanie zapewnić je podczas wykonywania wywołań usługi sieci web. W przyszłości możemy chcieć użyć więcej wbudowanych zabezpieczeń asp.net, więc zaimplementuję członkostwo i dostawcę roli i nadpisuję tylko to, czego potrzebuję (ValidateUser i GetRoles) Jednak po sprawdzeniu użytkownika dzięki implementacja dostawcy członkostwa Wciąż konfiguruję własne CustomIdentity do Context.User, aby móc odzyskać swoje hasło w razie potrzeby.Wyjątek seryjny wyjątku dla "CustomIdentity", gdy użytkownik jest odmowy w ASP.NET
Działa idealnie, o ile użytkownik może odwiedzać tę stronę. ale gdy użytkownik zostanie odmówiony, zamiast wyrzucać wyjątek AccessDeniedException, struktura zgłasza wyjątek Serializacji dla mojego CustomIdentity. Znalazłem perfectly similar behaviour with more details described on this link, ale nie napisano żadnej odpowiedzi.
Moja Wyjątkiem jest dokładnie taka sama jak w linku powyżej
Type is not resolved for member'CW.CustomAuthentication.CWIdentity,CW.CustomAuthentication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Runtime.Serialization.SerializationException: Type is not resolved for member 'CW.CustomAuthentication.CWIdentity,CW.CustomAuthentication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[SerializationException: Type is not resolved for member 'CW.CustomAuthentication.CWIdentity,CW.CustomAuthentication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.]
Microsoft.VisualStudio.WebHost.Connection.get_RemoteIP() +0
Microsoft.VisualStudio.WebHost.Request.GetRemoteAddress() +65
System.Web.HttpRequest.get_UserHostAddress() +18
System.Web.HttpRequest.get_IsLocal() +13
System.Web.Configuration.CustomErrorsSection.CustomErrorsEnabled(HttpRequest request) +86
System.Web.HttpContext.get_IsCustomErrorEnabled() +42
System.Web.Configuration.UrlAuthFailedErrorFormatter.GetErrorText(HttpContext context) +16
System.Web.Security.UrlAuthorizationModule.WriteErrorMessage(HttpContext context) +29
System.Web.Security.UrlAuthorizationModule.OnEnter(Object source, EventArgs eventArgs) +8777783
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
Czy to prawidłowe użycie członkowską i niestandardowe IIdentity i IPrincipal w tym samym czasie? Jeśli nie, to gdzie dodać właściwości, takie jak hasło lub inne dane użytkownika, jeśli korzystam z dostawców członkostwa i roli?
poważaniem,
Stephane Erbrech
@serbrech: jeśli zechcesz ponownie przeczytać swoje pytanie, na pewno zauważysz, że nie opublikowałeś wyjątku. W rzeczywistości, poświęć trochę czasu, aby opublikować wyjątek * complete *, przechwytując go, a następnie publikując wynik 'ex.ToString()'. –
Właśnie dodałem wyjątek, który otrzymuję, jeśli pomaga –
@serbrech: thanks. Czy można przekształcić swoje 'CW.CustomAuthentication.CWIdentity'? Czy przetestowałeś, że można go serializować za pomocą 'BinaryFormatter'? –