gpt4 book ai didi

c# - 将 unity.wcf 与 asp.net 路由集成

转载 作者:行者123 更新时间:2023-11-30 22:12:54 25 4
gpt4 key购买 nike

我正在尝试在没有 svc 文件的情况下在我的 wcf web 服务中使用 unity.wcf。

我的代码:

 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single)]
//[BasicAuthentication] TODO: this need to be set up
public class SsoAuthenticationService : ISsoAuthenticationService
{
private readonly ICustomerManager _manager;
internal const string ServiceUri = "SsoAuthenticationService";

public SsoAuthenticationService(ICustomerManager manager)
{
_manager = manager;
}

[WebGet(UriTemplate = "CreateSsoLogin/{request}")]
public ServiceResponse<bool> CreateSsoLogin(string request)
{
// TODO: inputs and outputs are wrong
_manager.DoWork();
return new ServiceResponse<bool>();
}
}

public class ServiceFactory : UnityServiceHostFactory
{
protected override void ConfigureContainer(Microsoft.Practices.Unity.IUnityContainer container)
{
container.RegisterType<ISsoAuthenticationService, SsoAuthenticationService>("authentication")
.RegisterType<ICustomerManager, CustomerManager>();


}
}

现在,当我尝试连接 ServiceFactory 类时,问题就来了 - 在我看到的所有代码示例中,它们都是通过 svc 文件执行此操作的,但我的应用程序中没有,因为它使用的是 ASP.NET路由。

所以我的 Global.asax 看起来像:

 private static void RegisterRoutes(RouteCollection routes)
{

//Integrate WCF services with the ASP.NET routing feature
routes.Add(new ServiceRoute(SsoAuthenticationService.ServiceUri, new ServiceFactory(), typeof(SsoAuthenticationService)));
}

当我调用我的 Web 服务方法时,我没有访问 Web 方法代码(尽管它确实调用了 ServiceFactory.ConfigureContainer)。如果我不使用 Unity,Global.asax 将如下所示:

 private static void RegisterRoutes(RouteCollection routes)
{

//Integrate WCF services with the ASP.NET routing feature
routes.Add(new ServiceRoute(SsoAuthenticationService.ServiceUri, new WebServiceHostFactory(), typeof(SsoAuthenticationService)));
}

如果我将其更改为此,则会命中 web 方法,但它当然会提示构造函数。

我需要什么额外的配置才能使 ServiceFactory 类的行为类似于 WebServiceHostFactory?

或者更好的选择是不使用 Unity.Wcf,并尝试使用纯 Unity 实现?

最佳答案

好的,我已经通过以下链接找到了答案 http://www.agile-code.com/blog/rest-web-services-with-unity-wcf/

我必须创建一对新的类来继承 WebServiceHostFactory(抽象)和 WebServiceHost,如链接中所述。

一旦这些就绪,并且我的 ServiceFactory 类继承自新类,一切就开始工作了。

关于c# - 将 unity.wcf 与 asp.net 路由集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19471032/

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