我想对当前托管在 IIS7 中的 WCF 应用程序使用 netTcpBinding,这意味着将其配置为使用 WAS。这相当简单,但是,我的应用程序之前使用了 global.asax 文件中的 Application_Start 事件。我不需要访问 httpContext(据我所知,访问权限已在 IIS7 中删除),但是我仍然想挂接到 start 或 init 方法?
在 WAS 中托管应用程序时是否存在与 IIS7 相同的等效项?
使用经典模式不是一个选项(同样,我对 httpcontext 不感兴趣,这似乎只有在使用 http 绑定时才有效) - 而且我看到了一个将静态类放入 app_code 文件夹中的示例,它看起来像可怕的黑客。
我相信AppInitialize()
就是您正在寻找的方法。下面是一篇关于使用它在 WAS 托管的 WCF 服务中初始化 Castle Windsor 的文章:
温莎城堡和非 HTTP 协议 WCF 服务 http://consultingblogs.emc.com/matthall/archive/2009/08/18/castle-windsor-and-non-http-protocol-wcf-services.aspx
文章的本质是,而不是使用Application_Start()
在 WAS 中不会被调用:
protected void Application_Start(object sender, EventArgs e)
{
var container = new WindsorContainer("ioc.config");
DefaultServiceHostFactory.RegisterContainer(container.Kernel);
}
Use:
public class InitialiseService
{
/// <summary>
/// Application initialisation method where we register our IOC container.
/// </summary>
public static void AppInitialize()
{
var container = new WindsorContainer("ioc.config");
DefaultServiceHostFactory.RegisterContainer(container.Kernel);
}
}
引用马特的话:
我承认我花了一段时间更详细地研究了 Host Factory,
想要包装DefaultServiceHostFactory
。然而,出现
是一个更简单的解决方案,那就是利用一点点
记录的 AppInitialize 方法。如果您创建一个类(任何类),
将其放入 ASP.NETApp_Code
项目中的文件夹并给它一个
方法签名定义如下,这个小宝贝会被解雇
正是您想要的时候。然后你可以初始化你的 IoC
里面有容器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)