我有一个带有 2 个模块的 ASP.Net 应用程序:
- 服务器模块,作为 Windows 服务运行。
- 安装在 IIS 上的 Web 模块。
在过去的几年里,上述工作完美(一直在工作)。当我必须将应用程序移动到新的 Windows 2008 服务器时,问题刚刚发生。
我所做的是:
- 将服务器模块上的目标从 AnyCPU 更改为 x86,然后在 BP 机器上对其进行测试,一切正常。
- 将服务器和 Web 模块移至 Win 2008 服务器。
- 安装服务并运行它,到目前为止一切顺利。
- 从网站上,我运行了一个查询,该查询因空指针异常而失败,如下所示:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)
这就是我开始旋转的地方。我与服务交谈的代码与此类似:
<application name="SHR">
<client url="tcp://localhost:8039">
<wellknown type="Package.dal.MyDAO, MyPackage" url="tcp://localhost:8039/SHR/MyDAO.rem"/>
</client>
<channels>
<channel ref="tcp client">
<clientProviders>
<formatter ref="binary" includeVersions="false"/>
<provider type="server, server"/>
</clientProviders>
</channel>
</channels>
</application>
我运行了 sql profiler,我可以看到我试图调用的类方法确实完全执行,但由于某些原因,它没有返回任何内容。该类本身正确实例化,并且我在插入/删除的地方运行了查询并且一切正常,但是当我需要返回数据集时,即使我知道它不为 null,它也会返回 null)。
当我将 CPU 更改为 x86 时,仅在 Win 2008 中出现此问题。如果我尝试在不将 AnyCPU 更改为 x86 的情况下运行该服务,则会出现另一组错误。