通过AJAX调用ASMX会返回内部服务器错误

时间:2015-08-13 01:41:53

标签: asmx iis-8.5

我有一个(VB)网站应用程序,它通过AJAX控件(使用AjaxControlToolkit)调用ASMX服务来预填充名称搜索。但是,该调用始终返回内部服务器错误500.19,并显示错误“您正在查找的资源存在问题,并且无法显示”。该应用程序的所有其他功能都有效。该网站已预编译并部署在双节点Windows 2012 R2 / IIS 8.5群集上。我已经尝试在我的web.config中添加各种项目,我已经删除了应用程序并重新创建了它,我已经验证了数据库连接,我已经检查过IIS配置中是否存在ASMX处理程序。更令人困惑的是,这个应用程序可以在我的本地Windows 8.1 / IIS 8.5环境和IIS 7测试服务器上运行。

应用程序在为.NET 4.0配置的应用程序池下运行,并使用“集成”的管道模式。为了测试,我尝试使用2.0池,但是应用程序根本不起作用。

我收到错误的请求网址格式为:http://www.example.com/myapplication/EmployeeSearch.asmx/SearchByName

还有什么想法可以看看吗?是否会出现导致此问题的集群环境?

(我知道有87,000人提出了类似的问题,但我还没有找到解决我问题的问题。)

更新 走了一会儿后,我回到了这里。我终于能够获得更深入的错误信息(500.19),尽管它仍然没有得到足够的阐述。调用ASMX是应用程序中唯一产生此错误的部分。我还做了一个只使用jQuery来调用服务的快速版本,它产生了相同的结果。根据下面的内容,配置文件路径对我来说是迷惑的......为什么它会成为它使用的路径?

Module: 
    IIS Web Core 
Notification: 
    BeginRequest 
Handler: 
    Not yet determined 
Error Code: 
    0x8007010b 
Config Error: 
    Cannot read configuration file  
Config File: 
    \\?\UNC\0.0.0.0\webcontent\www.example.com-iis\my-application\EmployeeSearch.asmx\SearchByName\web.config 
Requested URL: 
   http://www.example.com:80/my-application/EmployeeSearch.asmx/SearchByName 
Physical Path
   \\0.0.0.0\webcontent\www.example.com-iis\my-application\EmployeeSearch.asmx\SearchByName 
Logon Method
   Not yet determined 
Logon User
   Not yet determined 
Request Tracing Directory
   C:\inetpub\logs\FailedReqLogFiles 

1 个答案:

答案 0 :(得分:1)

在这种情况下,解决方案(与Microsoft支持人员交谈后)是将应用程序的allowSubDirConfig设置为False

现在备份并解释原因。这是因为对于web.config,IIS探测器(如果设置为True或根本不设置)的方式。在尝试检索web.config之前检查给定路径/ URL(在本例中为ASMX调用)是否是一个目录是否足够聪明,但是根据应用程序的存储,它可能无法告诉它是否是一个目录,在这种情况下,它默认寻找web.config,好像该路径是一个目录。在我的例子中,我们使用远程NTFS共享进行存储。可能设备/设备或设备驱动程序不支持IIS用于检查目录是否存在的操作/目录监视器。将allowSubDirConfig设置为False表示IIS在进行ASMX方法调用时不会尝试探测web.config文件,这会阻止"无法读取配置文件&# 34;我得到的错误。