global.asax没有更新

时间:2009-02-10 08:27:20

标签: c# asp.net global-asax

我们有一个Web应用程序,我们使用global.asax进行url重写。我们在实时服务器上使用该网站的编译版本。

作为修改请求的一部分,我们必须添加一些自定义本机AJAX代码,其中javascript将调用webservice来更新页面内容。为了能够使用扩展名.asmx调用webservice,我们修改了url重写代码以单独处理asmx请求。

这种安排在本地计算机上运行良好,但是当我们发布站点并将其部署在实时服务器上时,新代码似乎不会被包含在内。它仍会跳过检查“.asmx”扩展名的条件,并将Web服务名称作为页面名称抛出页面未找到异常。

我们已经尝试过全面搜索并搜索这些东西......但无济于事.. 任何可能出错的指针......?

3 个答案:

答案 0 :(得分:0)

假设您的URL重写是好的(通常不是作为HttpModule实现的吗?)我会检查以确保生产中的IIS中有一个ISAPI映射,它将.asmx请求发送给ASP.NET。

如果您认为您对global.asax的更改尚未被重新安装,那么您可以随时停止应用程序池,在c:\ windows \ microsoft.net \ framework [version] \ temporary中找到您的Web应用程序编译位asp.net文件...并删除jitted版本。我之前看到过关于Jitting更改的ASP.NET漏洞。

我还考虑在其中一个调用Web服务的页面上运行http fiddler(IE)或篡改数据(FireFox扩展)。它将准确地告诉您页面如何调用Web服务,并且您可以验证被调用的URL是否正确。

答案 1 :(得分:0)

有machine.config文件,您可以在其中添加HttpModules。我也认为你可以通过web.config做到这一点。

答案 2 :(得分:0)

我能想到的一个原因是,在Web.config中,您可能已在system.web部分配置了路由模块,但未在system.webServer中配置(或者至少忘记了某些内容)。

我以前遇到过类似的问题,解决方法是移除模块和放大器。再次在Web.config的system.webServer部分添加它,如下所示:

<system.webServer>
    <modules>
      <remove name="UrlRoutingModule" />
      <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, e="RoleManager" type="System.Web.Security.RoleManagerModule"/>
    </modules>
</system.webServer>

它可能是一个不同的模块或处理程序,但这个想法基本相同。首先“删除”模块非常重要。