我有一個WCF Web服務託管在我的本地IIS上(不是Express)。我在其根目錄中包含了一個Global.asax,它應該是。由於我使用Ninject和WCF擴展,因此Global類擴展NinjectHttpApplication而不是HttpApplication(如here所示)。 此外,我正在使用AutoMapper庫來規避編寫枯燥的樣板代碼。 問題出現是因爲我定義的用於配置AutoMapper的靜態方法沒有被調用,導致AutoMapper在我調用Mapper.Map()時拋出異常。該靜態方法的調用在Global.asax的Application_Start()方法中定義,因爲我希望這些映射在每個Web服務的生命週期中執行一次。順便說一下,Ninject的CreateKernel()方法被調用得很好。 我在這裏錯過了什麼嗎?我試過調試它,即使我已經將調試器附加到w3wp.exe,並且也試圖在其正文中放置一個明確的Debugger.Break()調用,但它並未達到斷點。Global.asax的Application_Start方法沒有被調用
這是它的樣子至今:
的Global.asax
<%@ Application Codebehind="Global.asax.cs" Inherits="MyApp.WebHost.Global" Language="C#" %>
的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 */
RegisterMappings方法
public static class AutoMapperConfig
{
public static void RegisterMappings()
{
/* multiple calls to Mapper.CreateMap() */
Mapper.AssertConfigurationIsValid();
}
}
SVC文件標記
<%@ ServiceHost Language="C#"
Debug="true"
Service="MyApp.Services.MyAppService"
Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory" %>
其他一切作品,我已經創建了一個測試客戶端(一個簡單的控制檯應用程序),並增加了服務的參考。服務方法被調用的很好,只是這些映射有點問題,因爲AutoMapper會一直拋出AutoMapperMappingException異常(「缺少類型映射配置或不支持的映射」),原因很明顯。 應用程序的應用程序池是DefaultAppPool。我應該創建一個單獨的?
我真的不明白這裏的問題。先謝謝你。