我在IIS上的一个网站下托管两个应用程序。当用户登录时,主应用程序会创建一个会话状态。我能够在两个应用程序之间共享会话,但当我试图访问特定的会话变量时,我得到一个反序列化错误,如下所示。在我的第二个应用程序上,我加载了它声称丢失的dll(在启动时的Global.asax中)。我甚至在访问会话之前确认它已经被加载,但它仍然抛出一个错误。加载的库是来自同一个目录,并且具有与它所抱怨的相同的汇编字符串。
也许是加载到了应用程序的不同域?有人知道为什么还是不行吗?任何建议都将是巨大的。
> [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
这看起来像是一个依赖问题,是的,文件是存在的,但可能它所依赖的其他文件不存在。错误信息可能有点误导人