Asp.net 当通过javascript代理(AJAX)调用.Net web服务时,是否使用HttpModule?
我正在使我们的大型web服务集可用于AJAX调用。我已将Asp.net 当通过javascript代理(AJAX)调用.Net web服务时,是否使用HttpModule?,asp.net,ajax,web-services,ihttpmodule,Asp.net,Ajax,Web Services,Ihttpmodule,我正在使我们的大型web服务集可用于AJAX调用。我已将[System.Web.Script.Services.ScriptService]添加到每个服务中。我们有一个注册的HttpModule,它初始化了我们在IHttpModule.Init覆盖中经常用于日志记录和国际化的一些对象。当我向任何web方法发出SOAP请求时,似乎调用了IHttpModule.Init,但当我向任何web方法发出JSON请求时,却没有调用IHttpModule.Init。我已经通过在调用文件时写入文件来确认了这一点
[System.Web.Script.Services.ScriptService]
添加到每个服务中。我们有一个注册的HttpModule,它初始化了我们在IHttpModule.Init覆盖中经常用于日志记录和国际化的一些对象。当我向任何web方法发出SOAP请求时,似乎调用了IHttpModule.Init,但当我向任何web方法发出JSON请求时,却没有调用IHttpModule.Init。我已经通过在调用文件时写入文件来确认了这一点
当通过javascript代理(AJAX)调用.Net web服务时,是否使用HttpModule?如果是这样,我是否缺少某种配置?相关代码位包括在下面 -科林-
Web.config:
<httpModules><add name="GlobalApplicationModule" type="Common.GlobalApplicationModule, Common"/></httpModules>
这是一种非常奇怪的调试日志记录方法。。。您的问题很可能是由于您的IIS配置造成的。听起来IIS根本没有将请求传递给ASP.NET。检查您的映射。您的部分代码似乎没有标记为代码,请重新格式化好吗?“当通过javascript代理调用.Net web服务时,是否使用了HttpModules?”->是的。问题出在别的地方。
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);
}
}
}
}