我正在将 ASP.NET MVC 5 应用程序从 .NET Framework 移植到 Mono。
最后的前沿是让 HostingEnvironment.QueueBackgroundWorkItem 工作。
该应用程序在 Docker 容器内的 Apache mod_mono 上运行。
正如标题所说,HostingEnvironment.QueueBackgroundWorkItem 抛出 InvalidOperationException。下面是完整的堆栈跟踪。
System.InvalidOperationException: Operation is not valid due to the current state of the object.
at System.Web.Hosting.HostingEnvironment.QueueBackgroundWorkItem (System.Func`2[T,TResult] workItem) [0x00015] in <347f335902b24586a53361aa1278a360>:0
at System.Web.Hosting.HostingEnvironment.QueueBackgroundWorkItem (System.Action`1[T] workItem) [0x00005] in <347f335902b24586a53361aa1278a360>:0
at Ayyeka.Web.UI.Utils.DashboardModelBuilder.SaveModelToCache (Ayyeka.Web.UI.Models.AdminManagementModel model, System.UInt64 userId, System.String token) [0x00005] in <94931e6f7d3d48188e8c013f1bec6e2a>:0
at Ayyeka.Web.UI.Utils.DashboardModelBuilder.build (System.String userUiRole, System.UInt64 userId, System.String token, Ayyeka.Web.UI.BackendUser.User user, System.Boolean cacheModel) [0x004a1] in <94931e6f7d3d48188e8c013f1bec6e2a>:0
Run Code Online (Sandbox Code Playgroud)
我试图跟踪单声道源中的错误,它可能归结为以下方法中的标记行:
public static void QueueBackgroundWorkItem(Func<CancellationToken, Task> workItem) {
if (workItem == null) {
throw new ArgumentNullException("workItem");
}
if (Host == null) { // <------- HERE
throw new InvalidOperationException(); // can only be called within an ASP.NET AppDomain
}
QueueBackgroundWorkItemInternal(workItem);
}
Run Code Online (Sandbox Code Playgroud)
为什么主机为空?我的 mod_mono 是否配置错误,以至于所有内容都不会在 ASP.NET AppDomain 中运行?还是不支持?
谢谢。
| 归档时间: |
|
| 查看次数: |
507 次 |
| 最近记录: |