【发布时间】:2018-01-03 17:50:32
【问题描述】:
我正在尝试将 Web 项目从 IIS 托管移动到自托管结构。我正在使用 Owin 和 Web API 2。
看来这段代码:
using (WebApp.Start<Startup>(url))
{
bla...
}
创建一个 AppDomain(ID == 1)。
编辑:此 API 是用于访问现有软件(“仅”几百万行代码)数据的新接口,这意味着我无法真正做我想做的事. “用户”实际上更像是一个“帐户”,这意味着从技术上讲,我可以将数百个客户端连接为同一个“用户”。 编辑结束
我遇到的问题如下:当客户端登录时,我创建了一个 AppDomain 来加载其静态数据。由于同一个帐户可以同时有多个会话(或者例如同一个用户在他的智能手机 + 计算机上连接),我必须在 Session 和 AppDomain 之间做出区分。
因此,我的所有控制器都在调用 API 的用户的 AppDomain 中调用,所有服务也是如此。
但是,Web API 2 似乎在每个 Controller 之后添加了一个序列化层。而这个序列化层出现在我手动创建的所有 AppDomain 的范围之外:它位于 ID == 1 的 AppDomain 中。
由于序列化有时需要访问用户的静态数据,我最终会经常遇到序列化错误。
我正在寻找一种方法来跳过由 Web API 2 引起的额外序列化或强制此序列化发生在特定的 AppDomain 中。
我没有在我正在使用的 .Net 包的文档中找到任何关于这两个想法的提示,也没有在已经提出的问题中找到任何提示。
任何想法(甚至是解决方法)都将不胜感激 =)
感谢您的任何贡献;)
【问题讨论】:
-
您正在为每个用户创建一个AppDomain?除了WRONG, WRONG, WRONG,我什至不知道如何回应。你从错误的起点开始,或者在路上走了非常错误的岔路口。与其告诉我们你做坏事的实验,不如告诉我们你的总体目标是什么?
-
当我读到这个问题时,我的下巴都掉了下来。我很难相信有人会像这样使用 AppDomains。说真的,您的所有用户都需要一个 AppDomain。
标签: c# asp.net-web-api2 owin appdomain