Используются ли HttpModules, когда веб-служба .Net вызывается через прокси-сервер javascript (AJAX)? - PullRequest
0 голосов
/ 16 марта 2010

Я делаю наш большой набор веб-сервисов доступным для вызовов AJAX. Я добавил [System.Web.Script.Services.ScriptService] к каждой услуге. У нас есть зарегистрированный HttpModule, который инициализирует некоторые объекты, которые мы регулярно используем для регистрации и интернационализации в переопределении IHttpModule.Init. Похоже, что IHttpModule.Init вызывается, когда я делаю SOAP-запрос к любому веб-методу, но не когда я делаю JSON-запрос к любому веб-методу. Я подтвердил это, записав файл при его вызове.

Используются ли модули HttpModules, когда веб-служба .Net вызывается через прокси-сервер javascript (AJAX)? Если так, то мне не хватает какой-то конфигурации? Соответствующие кодовые биты включены ниже.

-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);
      }
    }
  }
}

1 Ответ

0 голосов
/ 17 марта 2010

Это очень странный метод ведения журнала отладки ... Ваша проблема, скорее всего, связана с вашей конфигурацией IIS.Похоже, IIS вообще не передает запрос ASP.NET.Проверьте свои отображения.

...