gpt4 book ai didi

wcf - IIS上托管的WCF服务的入口方法是什么?

转载 作者:行者123 更新时间:2023-12-02 06:22:42 25 4
gpt4 key购买 nike

一些背景信息 -我正在尝试在 Azure 上托管 RESTful WCF 服务。据我了解,除非我在角色上托管 ASP.NET 类型,否则我实际上并不需要 global.asax 类(它具有 application_start 方法)。

从基本原型(prototype)设计中,我所需要的只是 svc 文件及其背后的实现,并且它会在角色启动时自动初始化(我的意思是,托管在 IIS 上)。这很棒,因为除了 Web 之外我不需要额外的代码。配置,我的服务已启动并正在运行。我不需要创建新的服务主机并开始监听它等。我可以将角色部署并将 POST 消息部署到我的服务。

问题 -我实现了自定义日志记录和初始化类,我需要在服务启动时对其进行初始化。我将我的服务配置为单例,但我不确定应该将自定义初始化组件放在哪里。

如果没有显式的应用程序启动方法并且我的服务配置为单例,我是否可以假设当第一个请求传入时,我的服务构造函数被调用? (以及我所有的自定义初始化?)。

最佳答案

can I assume that when the first request comes in, my service constructor gets called?

是的,但是您应该问自己是否真的希望您的服务作为单例运行。如果你对此感到满意,那么它就会工作得很好;如果您不希望它作为单例运行,那么您应该使用自定义工厂查看 Russell 的答案。

看看Should WCF service typically be singleton or not?关于 WCF 服务是否应该是单例的一些讨论。您需要根据自己的情况做出决定,但通常 WCF 服务不是单例,除非需要。

要实现自定义工厂,请参阅此 MSDN 链接 Extending Hosting Using ServiceHostFactory 。正如链接所描述的,像这样扩展服务主机工厂

public class DerivedFactory : ServiceHostFactory
{
public override ServiceHost CreateServiceHost( Type t, Uri[] baseAddresses )
{
return new ServiceHost(t, baseAddresses )
}
}

然后在 ServiceHost 指令中指定您的工厂

<% @ ServiceHost 
Service="MyNamespace.MyService"
Factory="MyNamespace.DerivedFactory" %>

关于wcf - IIS上托管的WCF服务的入口方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7787995/

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