Ven*_*nom 2 wcf ninject automapper global-asax
我有一个托管在我的本地IIS(而不是Express)上的WCF Web服务.我在其根目录中包含了一个Global.asax,它应该在那里.由于我使用Ninject与WCF扩展,类全球扩展,而不是一个HttpApplication NinjectHttpApplication(如看到这里).另外,我正在使用AutoMapper库来规避编写无聊的样板代码.出现这个问题的原因是我没有调用我为配置AutoMapper定义的静态方法,导致AutoMapper在调用Mapper.Map()时抛出异常.静态方法的调用是在Global.asax的Application_Start()方法中定义的,因为我希望每个Web服务的生命周期执行一次这些映射.顺便说一句,Ninject的CreateKernel()方法被调用就好了.我在这里错过了什么吗?我已经尝试过调试它,即使我已经将调试器附加到w3wp.exe并尝试在其正文中调用一个显式的Debugger.Break()调试,它也没有达到断点.
到目前为止它是这样的:
Global.asax中
<%@ Application Codebehind="Global.asax.cs" Inherits="MyApp.WebHost.Global" Language="C#" %>
Run Code Online (Sandbox Code Playgroud)
的Global.asax.cs
public class Global : NinjectHttpApplication
{
protected override IKernel CreateKernel()
{
IKernel kernel = new StandardKernel();
/* various bindings */
return kernel;
}
protected void Application_Start(object sender, EventArgs e)
{
AutoMapperConfig.RegisterMappings();
}
/* rest of Global.asax methods (Session_Start, Application_BeginRequest, etc.) with empty bodies */
Run Code Online (Sandbox Code Playgroud)
RegisterMappings方法
public static class AutoMapperConfig
{
public static void RegisterMappings()
{
/* multiple calls to Mapper.CreateMap() */
Mapper.AssertConfigurationIsValid();
}
}
Run Code Online (Sandbox Code Playgroud)
Svc文件标记
<%@ ServiceHost Language="C#"
Debug="true"
Service="MyApp.Services.MyAppService"
Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory" %>
Run Code Online (Sandbox Code Playgroud)
其他所有工作,我已经创建了一个测试客户端(一个简单的控制台应用程序)并添加了一个服务引用.调用服务方法很好,只是这些映射有点问题,因为AutoMapper不断抛出AutoMapperMappingException异常("缺少类型映射配置或不支持的映射."),原因很明显.应用程序的应用程序池是DefaultAppPool.我应该创建一个单独的吗?
我真的不明白这里的问题.先感谢您.
好吧,它需要一些额外的搜索,但我找到了答案 - https://groups.google.com/forum/#!topic/ninject/wRy3ELSV4bU
问题是NinjectHttpApplication类本身实现了Application_Startup方法,因此无法在您自己的派生类(Global类)中实现它.要模拟此类行为,需要覆盖OnApplicationStarted Ninject的方法.这就是我对特定问题的看法:
protected override void OnApplicationStarted()
{
AutoMapperConfig.RegisterMappings();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1293 次 |
| 最近记录: |