通过 AJAX returns 内部服务器错误调用 ASMX
ASMX call via AJAX returns internal server error
我有一个 (VB) 网站应用程序,它通过 AJAX 控件(使用 AjaxControlToolkit)调用 ASMX 服务来预填充名称搜索。但是,该调用总是 returns 内部服务器错误 500.19 错误 "There is a problem with the resource you are looking for, and it cannot be displayed." 应用程序的所有其他功能都有效。该网站已预编译并部署在双节点 Windows 2012 R2/IIS 8.5 集群上。我已经尝试在每个其他线程中向我的 web.config 添加各种项目,我删除了应用程序并重新创建了它,我已经验证了数据库连接,我已经检查了 IIS 配置中是否存在 ASMX 处理程序。更令人困惑的是,这个应用程序可以在我的本地 Windows 8.1/IIS 8.5 环境和 IIS 7 测试服务器上运行。
该应用程序在为 .NET 4.0 配置的应用程序池下运行,并使用管道模式 "Integrated." 为了进行测试,我尝试使用 2.0 池,但应用程序没有完全没有工作。
请求的格式 URL 我得到的错误是: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[=12=].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
在这种情况下,解决方案(在与 Microsoft 支持人员交谈后)是将应用程序的 allowSubDirConfig
设置为 False
。
现在备份并解释原因。这是因为 IIS 如何探测 - 如果设置为 True
或根本未设置 - web.config。在尝试检索 web.config
之前检查给定的 path/URL(在本例中为 ASMX 调用)是否是一个目录是足够聪明的,但根据应用程序的存储,它可能不是能够判断它是否是目录,在这种情况下,它默认查找 web.config
就好像该路径是目录一样。就我而言,我们使用远程 NTFS 共享进行存储。 appliance/device 或设备驱动程序可能不支持 IIS 用来检查目录是否存在的 operation/directory 观察程序。将 allowSubDirConfig
设置为 False
意味着在进行 ASMX 方法调用时 IIS 将不会尝试探测 web.config
文件,这可以防止出现 "Cannot read configuration file" 错误。
我有一个 (VB) 网站应用程序,它通过 AJAX 控件(使用 AjaxControlToolkit)调用 ASMX 服务来预填充名称搜索。但是,该调用总是 returns 内部服务器错误 500.19 错误 "There is a problem with the resource you are looking for, and it cannot be displayed." 应用程序的所有其他功能都有效。该网站已预编译并部署在双节点 Windows 2012 R2/IIS 8.5 集群上。我已经尝试在每个其他线程中向我的 web.config 添加各种项目,我删除了应用程序并重新创建了它,我已经验证了数据库连接,我已经检查了 IIS 配置中是否存在 ASMX 处理程序。更令人困惑的是,这个应用程序可以在我的本地 Windows 8.1/IIS 8.5 环境和 IIS 7 测试服务器上运行。
该应用程序在为 .NET 4.0 配置的应用程序池下运行,并使用管道模式 "Integrated." 为了进行测试,我尝试使用 2.0 池,但应用程序没有完全没有工作。
请求的格式 URL 我得到的错误是: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[=12=].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
在这种情况下,解决方案(在与 Microsoft 支持人员交谈后)是将应用程序的 allowSubDirConfig
设置为 False
。
现在备份并解释原因。这是因为 IIS 如何探测 - 如果设置为 True
或根本未设置 - web.config。在尝试检索 web.config
之前检查给定的 path/URL(在本例中为 ASMX 调用)是否是一个目录是足够聪明的,但根据应用程序的存储,它可能不是能够判断它是否是目录,在这种情况下,它默认查找 web.config
就好像该路径是目录一样。就我而言,我们使用远程 NTFS 共享进行存储。 appliance/device 或设备驱动程序可能不支持 IIS 用来检查目录是否存在的 operation/directory 观察程序。将 allowSubDirConfig
设置为 False
意味着在进行 ASMX 方法调用时 IIS 将不会尝试探测 web.config
文件,这可以防止出现 "Cannot read configuration file" 错误。