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

标签 wcf iis azure singleton initialization

一些背景信息 - 我正在尝试在 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/

相关文章:

.net - 无法在 WinDGB 中打开 Azure 应用服务 .NET Core 2 转储文件(转储文件中存在 2 个运行时)

python - Azure Python SDK 错误

.net - 我可以使用 UriTemplate 将非字符串传递给 WCF RESTful 服务吗?

c# - WCF - 发布 JSON 对象

c# - 在WCF中设置回调的receiveTimeout?

silverlight - 使用 Moq 在 Silverlight WCF 代理中模拟异步调用

web-services - 我收到错误 “Server Application Unavailable”

c# - 以编程方式编辑 IIS 站点上 web.config 中的 SslFlags

asp.net - 是否需要授予应用程序池身份对Web文件夹的读取权限?

asp.net - Azure B2C 应用程序角色(图形 api)