Web 中的多个应用程序域 API 2

Multiple appdomains in Web API 2

我正在尝试将 Web 项目从 IIS 托管移动到自托管结构。我正在使用 Owin 和 Web API 2.

看来这段代码:

using (WebApp.Start<Startup>(url))
{
  bla...
}

创建一个 AppDomain(ID == 1)。

编辑: 这个 API 是一个新的接口,用于访问现有软件("only" 几百万行代码)的数据,它意味着我不能真正做我想做的事。 "user" 实际上更像是一个 "account",这意味着我在技术上可以让数百个客户端连接为相同的 "user"。 编辑结束

我遇到的问题如下:当客户端登录时,我创建了一个 AppDomain 来加载它的静态数据。由于同一个帐户可以同时有多个会话(或者例如同一用户在他的智能手机+计算机上连接),我必须区分 Session 和 AppDomain。

因此,我的所有控制器都在调用 API 的用户的 AppDomain 中调用,所有服务也是如此。

但是,Web API 2 似乎在每个控制器之后添加了一个序列化层。并且这个序列化层出现在我手动创建的所有 AppDomain 的范围之外:它在 ID == 1 的 AppDomain 中。

由于序列化有时需要访问用户的静态数据,所以我经常遇到序列化错误。

我正在寻找一种方法来跳过由 Web API 2 引起的额外序列化或强制此序列化发生在特定的 AppDomain 中。

我没有在我正在使用的 .Net 包的文档中或已经提出的问题中找到任何关于这两个想法的提示。

任何想法(甚至是解决方法)将不胜感激 =)

感谢您的贡献 ;)

问题确实来自静态 class(因此在 AppDomain 级别定义),其中包含 大量 信息,并在整个过程中用于属性的一些 getter代码(我知道这是一个不好的做法,但不幸的是我现在不能改变它)。

我最终想出的解决方案是在创建的 AppDomains 中手动序列化所有内容,从而解决问题。