gpt4 book ai didi

wcf - 注入(inject) WCF REST 服务

转载 作者:行者123 更新时间:2023-12-01 13:03:10 25 4
gpt4 key购买 nike

我使用的是 WCF REST 模板,其中服务仅通过一个类实现并在 Global.ascx 中注册(很像 MVC Controller )。

RouteTable.Routes.Add(new ServiceRoute("Games/Games", new WebServiceHostFactory(), typeof(Games.Games)));

Games.Games 有一个接受 Dal.Games.IGames 的 ctor,我有一个 NinjectModule 和 Bindings 准备就绪,但我无法确定将内核传递到哪里以让它控制服务的创建类。

我的服务没有标记 (svc) 文件,因此我猜测它与将 WebServiceHostFactory 替换为 Ninject 中的文件有关。我能够在 Ninject Web 扩展中找到一个,但只是将其删除并没有改变任何东西,更不用说我找不到任何地方可以在那个类中设置 kenel。

非常感谢任何解决方案、提示或技巧。

最佳答案

首先让我说,真正了解 Ninject 内部工作原理的人可能会提供更简洁的解决方案。不过,我一直在努力解决与您提到的相同的问题。

主要是通过反复试验,我确定如果您在 Ninject.Extensions.Wcf 库中进行以下代码更改,Ninject 将在您的服务类上发挥其魔力。

在 NinjectServiceHostFactory.cs 中,我更改了基类和传递给 .Get 的类型

public class NinjectServiceHostFactory : WebServiceHostFactory //<-- Changed base class
{
protected override ServiceHost CreateServiceHost( Type serviceType, Uri[] baseAddresses )
{
var serviceTypeParameter = new ConstructorArgument( "serviceType", serviceType );
var baseAddressesParameter = new ConstructorArgument( "baseAddresses", baseAddresses );
return KernelContainer.Kernel.Get<NinjectServiceHost>( serviceTypeParameter, baseAddressesParameter );
}
}

在 NinjectServiceHost.cs 中,我将基类更改为 WebServiceHost。

此外,我还添加了对两者的引用:

using System.ServiceModel.Web;

我确信这个解决方案打破了其他 WCF 服务类型的扩展,所以希望 Ninject 大师会出现并提供真正的解决方案。

关于wcf - 注入(inject) WCF REST 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664261/

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