我有几个使用WebActivator的程序包的Web应用程序。在使用IIS 7.5 Express的本地计算机上,无论我在Release配置还是Debug配置中进行测试,一切都可以正常工作。但是,在具有IIS 7.5的生产计算机上,WebActivator实际上并未运行,因此所有模块均无法加载,因此我必须将代码重新添加到Global.asax.cs文件中。
我为什至开始寻找问题感到困惑-用Google搜索并搜索了StackOverflow,但还没有遇到任何遇到类似问题的人。是否需要配置任何明确内容以使其运行?
编辑-添加了登录到Windows的激活器的快速示例。将函数内容添加到Global.asax.cs文件后,它可以在生产服务器上正常运行,但永远不会从激活器记录日志。
using System.Web.Mvc;
using System;
[assembly: WebActivator.PreApplicationStartMethod(typeof(Admin.App_Start.WebActivatorTestStart), "Start")]
namespace Admin.App_Start
{
public static class WebActivatorTestStart {
public static void Start() {
System.Diagnostics.EventLog log = new System.Diagnostics.EventLog();
log.Source = ".NET Runtime";
log.WriteEntry("WebActivator Start", System.Diagnostics.EventLogEntryType.Information);
}
}
}
最佳答案
好吧,我不能肯定地说我做了些什么来解决问题,但是现在可以了。
一段历史-我使用一些常见的库来管理许多不同的大型应用程序。我有我的通用网络库,那是我以前使用Ninject和WebActivator进行IOC设置的地方。该基础库中有App_Start文件夹。也许这是原因吗?不知道。从来没有让WebActivator使用此设置,因此我只使用NinjectHttpApplication来处理注册和启动工作。但是,基础库仍然依赖于WebActivator(只是没有App_Start文件夹)。
因此,现在我正在重构一些应用程序和基础库-清除过去几个月中的大量代码异味。第一步是将所有IoC移至实际的Web应用程序-减少基础库的整体性。基础库不再对WebActivator具有任何依赖关系。
现在就可以了。我还对基础库进行了一百五十次其他小的更改,因此,我对其他人没有对此系统化而深表歉意。