共享2个应用程序。ASP.Net MVC的会话状态反序列化错误

问题描述 投票:2回答:1

我在IIS上的一个网站下托管两个应用程序。当用户登录时,主应用程序会创建一个会话状态。我能够在两个应用程序之间共享会话,但当我试图访问特定的会话变量时,我得到一个反序列化错误,如下所示。在我的第二个应用程序上,我加载了它声称丢失的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
asp.net session iis session-state application-pool
1个回答
3
投票

这看起来像是一个依赖问题,是的,文件是存在的,但可能它所依赖的其他文件不存在。错误信息可能有点误导人

© www.soinside.com 2019 - 2024. All rights reserved.