我知道这个问题已经在这里讨论过几次,我做了功课并检查过,我尝试了我找到的每一个解决方案,但无济于事,一定有我遗漏的东西。
首先,ajax 调用的目的:将 3 个字符串参数发送到 web 服务中的一个方法,该方法会将这些数据保存到我的数据库中。如果该过程成功,它将返回一个带有 true 或 false 的 json 字符串。
奇怪的是,在本地一切正常,但是一旦我将文件上传到服务器上,对 web 服务的 ajax 调用就停止了工作......
首先,我检查是否可以通过在浏览器中输入 URL 来访问 Web 服务。我可以访问它并查看我的方法但是,我说但是,当我测试我的任何方法并单击“调用”按钮时,会发生一件奇怪的事情:按钮单击会打开一个新选项卡,它会将我发送回页面列出我可用的方法?!?有谁知道为什么会这样?即使是最基本的方法 Hello World 也行不通……
我在调试问题时遇到了麻烦。我需要一些有关如何调试的见解。
最奇怪的是ajax调用返回成功,但数据库中没有数据保存?!?
其他信息:我的站点使用 URL 路由。不知道这是否会影响 Ajax 调用,但我还是想提一下。
我提前感谢大家的帮助。
============================================
编辑:问题已解决
我的 web.config 中有一个重写规则,它在 URL 的末尾添加了一个“/”,这与 ajax 调用混淆了,我评论了代码,一切都按预期工作。让我们知道,这段代码与对 web 服务的 AJAX 调用不能很好地配合:
网络配置:
<system.webServer>
<rewrite>
<rules>
<rule name="AddTrailingSlashRule1" stopProcessing="true">
<match url="(.*[^/])$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="{R:1}/" />
</rule>
<rule name="CanonicalHostNameRule1">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.myDomain\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.myDomain.com/{R:1}" />
</rule>
<rule name="LowerCaseRule1" stopProcessing="true">
<match url="[A-Z]" ignoreCase="false" />
<action type="Redirect" url="{ToLower:{URL}}" />
</rule>
</rules>
</rewrite>
============================================