2010-03-16 66 views
0

我正在使我们的大量Web服务可用于AJAX调用。我已将[System.Web.Script.Services.ScriptService]添加到每项服务中。我们有一个注册的HttpModule,用于在IHttpModule.Init覆盖中初始化我们经常用于日志和国际化的一些对象。看起来IHttpModule.Init是在向任何Web方法发出SOAP请求时调用的,但是当我向任何Web方法发出JSON请求时不会调用IHttpModule.Init。我通过在文件被调用时写入文件来证实这一点。当通过JavaScript代理(AJAX)调用.Net Web服务时,是否使用HttpModule?

在通过JavaScript代理(AJAX)调用.Net Web服务时是否使用了HttpModules?如果是这样,我缺乏某种配置?相关代码位包含在下面。

-colin-


Web.config文件:

<httpModules><add name="GlobalApplicationModule" type="Common.GlobalApplicationModule, Common"/></httpModules> 

HTTPModules.cs:

class GlobalApplicationModule : IHttpModule 
{ 
    public void Dispose() 
    { 
     Internationalization.LanguageProvider.ReleaseAllResources(); 
    } 

    public void Init(HttpApplication application) 
    { 
    // DEBUG: Confirm that this method is called 
    StreamWriter writer = new StreamWriter("c:\\deleteme-HTTP_module_test.txt"); 
    writer.WriteLine("Init called."); 
    writer.Close(); 

    // Initialize logger 
    Common.Logger.Initialize("LogAssemblyPath", "LogClassName"); 

    Common.CentralConfiguration.CreateConfiguration(new Common.CentralizedStrategy()); 

    // Initialize language provider 
    if (!Internationalization.LanguageProvider.Initialized) 
    { 
     try 
     { 
     string debug = System.Configuration.ConfigurationManager.AppSettings["debugInternationalization"]; 
     string languageAssemblyLocation = System.Configuration.ConfigurationManager.AppSettings["LanguageAssemblyLocation"]; 
     string languageAssemblyBaseName = System.Configuration.ConfigurationManager.AppSettings["LanguageAssemblyBaseName"]; 
     languageAssemblyLocation = System.Web.HttpContext.Current.Server.MapPath(languageAssemblyLocation); 
     Internationalization.LanguageProvider.Init(languageAssemblyLocation, languageAssemblyBaseName, false); 
     if (debug != null && bool.Parse(debug)) 
     { 
      Internationalization.LanguageProvider.PrefixText = "*"; 
     } 
     } 
     catch (Exception x) 
     { 
     Common.Logger.Instance.LogError("Could not intialize assembly language provider. Error: " + x.Message); 
     } 
    } 
    } 
} 
+0

你的部分代码似乎没有标记为代码,你可以请格式化一遍吗? – ram 2010-03-16 17:27:14

+1

“通过JavaScript代理调用.Net Web服务时是否使用HttpModule?” - >是的。问题在别的地方。 – 2010-03-16 17:35:42

回答

0

这是一个非常奇怪的调试日志记录方法...您问题很可能是由于您的IIS配置。这听起来像IIS没有把请求转交给ASP.NET。检查你的映射。