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