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 中手动序列化所有内容,从而解决问题。
我正在尝试将 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 中手动序列化所有内容,从而解决问题。