Совместное использование 2 приложений: ошибка десериализации состояния сеанса для ASP. Net MVC - PullRequest
2 голосов
/ 08 мая 2020

Я размещаю два приложения на одном веб-сайте в IIS. Главное приложение создает состояние сеанса, когда пользователь входит в систему. Я могу разделить сеанс между двумя приложениями, но когда я пытаюсь получить доступ к указанной переменной сеанса c, я получаю ошибку десериализации, показанную ниже. В моем втором приложении я загружаю dll (в Global.asax во время запуска), который, по его словам, отсутствует. Я даже подтверждаю, что он был загружен до доступа к сеансу, но все равно выдает ошибку. Загруженная библиотека находится из того же каталога и имеет ту же строку сборки, на которую он жалуется.

Возможно, он загружает ее в другой домен приложения? Кто-нибудь знает, почему до сих пор не работает? Любые предложения были бы замечательными.

(Невозможно найти двоичный файл) enter image description here

(Подтверждено, что DLL правильно загружается при запуске для второго приложения) enter image description here

>     [SerializationException: Unable to find assembly 'Jenzabar.Portal.Framework, Version=0.0.0.0, Culture=neutral,
> PublicKeyToken=null'.]
>        System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()
> +4491385
>        System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo
> assemblyInfo, String name) +14472268
>        System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String
> objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA,
> Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader
> objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo,
> SizedArray assemIdToAssemblyTable) +179
>        System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped
> record) +278
>        System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
> +914
>        System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler
> handler, __BinaryParser serParser, Boolean fCheck, Boolean
> isCrossAppDomain, IMethodCallMessage methodCallMessage) +169
>        System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream
> serializationStream, HeaderHandler handler, Boolean fCheck, Boolean
> isCrossAppDomain, IMethodCallMessage methodCallMessage) +288
>        System.Web.Util.AltSerialization.ReadValueFromStream(BinaryReader
> reader) +1064
>        System.Web.SessionState.SessionStateItemCollection.ReadValueFromStreamWithAssert()
> +68
>        System.Web.SessionState.SessionStateItemCollection.DeserializeItem(String
> name, Boolean check) +256
>        System.Web.SessionState.SessionStateItemCollection.get_Item(String
> name) +29
>        ASP._Page_Views_Account_Login_cshtml.Execute() in C:\inetpub\wwwroot\auxtest\Views\Account\Login.cshtml:25
>        System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +252
>        System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +148
>        System.Web.WebPages.StartPage.ExecutePageHierarchy() +86
>        System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext
> pageContext, TextWriter writer, WebPageRenderingBase startPage) +107
>        System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +375
>        System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1
> filters, Int32 filterIndex, ResultExecutingContext preContext,
> ControllerContext controllerContext, ActionResult actionResult) +88
>        System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1
> filters, Int32 filterIndex, ResultExecutingContext preContext,
> ControllerContext controllerContext, ActionResult actionResult) +775
>        System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext
> controllerContext, IList`1 filters, ActionResult actionResult) +81
>        System.Web.Mvc.Async.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult
> asyncResult) +188
>        System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult
> asyncResult) +38
>        System.Web.Mvc.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +26
>        System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult
> asyncResult) +68
>        System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +52
>        System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult
> asyncResult) +39
>        System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
>        System.Web.Mvc.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) +40
>        System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult
> asyncResult) +68
>        System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38
>        System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
> +602
>        System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +195
>        System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +128

1 Ответ

3 голосов
/ 16 мая 2020

Это похоже на проблему с зависимостью, да, файл есть, но, возможно, какого-то другого файла, от которого он зависит, нет. Сообщение об ошибке может вводить в заблуждение

...