gpt4 book ai didi

c# - 在 IIS 上托管 WCF Web 服务时显式调用服务构造函数

转载 作者:太空狗 更新时间:2023-10-30 00:56:59 25 4
gpt4 key购买 nike

我想在 Microsoft IIS(IIS 托管)上托管我的 WCF 服务。

为此,我创建了我的服务:

// The service
public class MyService : IMyService {
// Ctors
public MyService() {
// Def ctor: I don't want to call it
}
public MyService(...) : this() {
// Parametric ctor, I want to call it!
}
...
}

// The contract
[ServiceContract]
public interface IMyService {
...
}

我创建了一个 svc 文件(一种为我的服务提供基地址的好方法):

<@ServiceHost Service="MyService" @>

但是这样做,在托管我的服务时(只需在 IIS 中创建一个虚拟目录,指向我的应用程序所在的文件夹,通常是项目目录),IIS 将调用默认构造函数。

如何使 IIS 调用不同的构造函数?

PS:我知道可以指定一个HostServiceFactory。我应该在这里使用它吗?它给了我工厂和主机。对于主机,我不能对主机传递的参数进行操作。但是,我该如何解决这个问题呢?

注意:我了解到许多解决方案都基于 Inversion of control (IoC) 和几个 IoC 框架,如 Unity , Castle ProjectSpring.NET .但是我根本不会真正使用它们。可以WCF自己做这个?我不能接受 WCF 不能让程序员通过以适当的方式构建服务来托管服务...

最佳答案

您必须编写几个自定义类来支持创建带参数的服务:

  • 实现 IInstanceProvider 的自定义类。此类将负责使用非默认构造函数创建服务实例。
  • 自定义类实现IServiceBehavior。此类将负责将自定义实例提供程序添加到端点调度程序中。
  • 将应用您的行为的自定义 ServiceHost
  • 自定义 ServiceHostFactory,它将实例化您的自定义服务主机。您将从 .svc 文件中引用该工厂。

这通常与构建对依赖注入(inject)的支持相同。您可以检查例如 this article .

关于c# - 在 IIS 上托管 WCF Web 服务时显式调用服务构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6279189/

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