在ASP.NET应用程序中托管的WCF服务中使用Autofac作为DI
发布时间:2020-05-24 03:15:58 所属栏目:asp.Net 来源:互联网
导读:我使用Autofac 1.4.5将服务依赖关系注入到我的WCF服务中.我已经阅读并遵循了 Autofac wiki page on WcfIntegration,但我的调试显示了我的WCF服务是由System.ServiceModel.Dispatcher.InstanceBehavior.GetInstance()方法创建的,而不是由AutofacWebServiceHost
|
我使用Autofac 1.4.5将服务依赖关系注入到我的WCF服务中.我已经阅读并遵循了 Autofac wiki page on WcfIntegration,但我的调试显示了我的WCF服务是由System.ServiceModel.Dispatcher.InstanceBehavior.GetInstance()方法创建的,而不是由AutofacWebServiceHostFactory创建的.我究竟做错了什么? 我已经设置了我的ajax.svc文件,使其与WebHttpBinding中使用的示例类似: <%@ ServiceHost Language="C#" Debug="true"
Service="Generic.Frontend.Web.Ajax,Generic.Frontend.Web"
Factory="Autofac.Integration.Wcf.AutofacWebServiceHostFactory,Autofac.Integration.Wcf" %>
我的WCF服务类Ajax是这样定义的: namespace Generic.Frontend.Web
{
[ServiceContract]
[AspNetCompatibilityRequirements(
RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Ajax
{
public MapWebService MapWebService { get; set;}
public Ajax() {
// this constructor is being called
}
public Ajax(MapWebService mapWebService)
{
// this constructor should be called
MapWebService = mapWebService;
}
[WebGet(ResponseFormat = WebMessageFormat.Json)]
[OperationContract(Name = "mapchange")]
public MapChangeResult ProcessMapChange(string args)
{
// use the injected service here
var result = MapWebService.ProcessMapChange(args);
return result;
}
}
}
现在我已经在Global.asax.cs中使用了如上面提到的wiki所示的接线: var builder = new ContainerBuilder(); builder.RegisterModule(new AutofacModuleWebservice()); var container = builder.Build(); AutofacServiceHostFactory.Container = container; 同 class AutofacModuleWebservice : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.Register<Ajax>();
builder.Register<MapWebService>().ContainerScoped();
}
}
在我的web.config我有 <services>
<service name="Generic.Frontend.Web.Ajax">
<endpoint address="http://mysite.com/ajax.svc/" binding="webHttpBinding"
contract="Generic.Frontend.Web.Ajax" />
</service>
</services>
. 该服务已经正常工作,但是我无法获取Autofac位(读取:创建/注入)工作.有任何想法吗? 编辑: System.InvalidOperationException: The service type provided could not be loaded as a service because it does not have a default (parameter-less) constructor. To fix the problem,add a default constructor to the type,or pass an instance of the type to the host. 干杯,奥利弗 解决方法您的服务设置是否与InstanceContextMode.Single?如果是,则wcf将使用默认构造函数创建您的服务.为了解决这个变化,您的实例上下文模式,并让自动填充管理您的服务的生命周期.(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 如何使用ASP.NET MVC中的基本控制器创建一个
- asp.net – ‘txtName’未声明 由于其保护等级可能无法访问
- asp.net-mvc – 在空项目中缺少类型Mono.Web.Util.RoleMana
- asp.net – Page.Request.UserHostAddress的格式无效
- asp.net-mvc – 在ASP.NET MVC3 Razor的渲染时间视图中获取
- ASP.NET分页控件
- asp.net – Mono apache2 =服务暂时不可用(503)
- asp.net – 在Azure网站上启用gzip压缩
- asp.net-mvc – ASP.NET MVC视图模型命名约定
- asp.net-mvc-4 – 无法加载文件或程序集’System.Web.Http.
推荐文章
站长推荐
- asp.net核心 – 无法使用托管代理在Visual Studi
- asp.net-web-api2 – 如何在WebAPI中使用Swagger
- .net – 如何在请求标头上调用需要承载令牌的NSw
- asp.net-mvc-3 – 在ASP.NET MVC 3中覆盖/禁用授
- asp.net-mvc-5 – WebJob和SignalR Hub之间的通信
- asp.net-mvc – MVCSiteMapProvider中的全球化
- asp.net-mvc – 服务层是否可以访问HttpContext?
- asp.net-mvc-3 – 从剃刀视图引用资源文件
- ASP.NET内置用户配置文件与旧stile用户类/表
- Asp.Net成员 – 实体框架4中的提供商
热点阅读
