gpt4 book ai didi

wcf - 在 IIS7 中使用 WAS 时,global.asax Application_Start 等效项是什么

转载 作者:行者123 更新时间:2023-12-02 13:39:31 25 4
gpt4 key购买 nike

我想对当前托管在 IIS7 中的 WCF 应用程序使用 netTcpBinding,这意味着将其配置为使用 WAS。这相当简单,但是,我的应用程序之前使用了 global.asax 文件中的 Application_Start 事件。我不需要访问 httpContext(据我所知,访问权限已在 IIS7 中删除),但我仍然想 Hook 启动或 init 方法?

在 WAS 中托管应用程序时是否存在与 IIS7 相同的等效项?

使用经典模式不是一个选项(同样,我对 httpcontext 不感兴趣,这似乎只有在使用 http 绑定(bind)时才有效) - 而且我看到了一个将静态类放入 app_code 文件夹的示例,其中看起来像一个可怕的黑客。

最佳答案

我相信 AppInitialize() 是您正在寻找的方法。下面是一篇关于使用它在 WAS 托管的 WCF 服务中初始化 CaSTLe Windsor 的文章:

Castle Windsor and non-HTTP Protocol WCF Services

本文的本质是,不要使用在 WAS 中不会被调用的 Application_Start():

protected void Application_Start(object sender, EventArgs e)
{
var container = new WindsorContainer("ioc.config");
DefaultServiceHostFactory.RegisterContainer(container.Kernel);
}

用途:

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);
}
}

引用马特的话:

I confess I spent a while looking at the Host Factory in more detail, looking to wrap the DefaultServiceHostFactory. However, there appears to be a far simpler solution and that is to make use of the little documented AppInitialize method. If you create a class (any class), put it into the ASP.NET App_Code folder in your project and give it a method signature as defined below, this little baby will get fired exactly when you want it to. You can then initialise your IoC container in there.

关于wcf - 在 IIS7 中使用 WAS 时,global.asax Application_Start 等效项是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com