终于想通了。
应用代码正确无误,已发布。问题出在配置上。正确的web.config是:
<configuration> <system.web> <compilation debug="true" targetframework="4.0" /> </system.web> <system.webServer> <handlers> <add name="scriptHandlerFactory" verb="*" path="*.asmx" type="System.Web.script.Services.scriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" /> </handlers> </system.webServer></configuration>
根据文档,从.NET
4起,不需要注册处理程序,因为它已移至machine.config。无论出于什么原因,这都不适合我。但是将注册添加到我的应用程序的web.config中可以解决此问题。
关于此问题的许多文章都指示将处理程序添加到该
<system.web>部分。这是行不通的,并且会导致其他问题。我尝试将处理程序添加到这两个部分中,这会产生一系列其他迁移错误,这些错误完全导致了我的故障排除方向。
万一它对其他人有帮助,如果我再次遇到同样的问题,请查看以下清单:
- 您是否
type: "POST"
在ajax请求中指定了? - 您是否
contentType: "application/json; charset=utf-8"
在ajax请求中指定了? - 您是否
dataType: "json"
在ajax请求中指定了? - 您的.asmx Web服务是否包含
[scriptService]
属性? - 您的网络方法是否包含
[scriptMethod(ResponseFormat = ResponseFormat.Json)]
属性?(即使没有此属性,我的代码也可以工作,但是很多文章说这是必需的) - 您是否已将中的添加
scriptHandlerFactory
到web.config文件中<system.webServer><handlers>
? - 您是否已从中的web.config文件中删除了所有处理程序
<system.web><httpHandlers>
?
希望这对遇到同样问题的人有所帮助。并感谢海报的建议。



