$ .ajax调用返回application / json并在生产服务器上的测试服务器,text / html上运行并失败

时间:2013-03-13 10:27:20

标签: asp.net ajax json jquery

前言:我知道有很多类似的问题,但没有人帮助过我。

我有点受约束。

我有一个ASP.NET应用程序,它使用$.ajax调用将一些数据返回到页面。我有3个不同的应用服务器,所有这些都是Windows Server 2003.

我不在本地运行,它在3个Web应用程序服务器上。 2工作,1不工作。

此调用在Dev服务器DevTest服务器上完美运行,但在生产服务器上失败。我在Chrome中检查了控制台,发现在我的Dev和DevTest环境中,ajax调用正在返回application/json,但生产正在返回text/html。此外,在我的Dev和DevTest服务器上,一切正常,我得到了json返回它应该,但在生产,我得到200 OK,但它返回整个调用页面html并执行我的ajax的错误功能呼叫。

这是我的ajax电话:

$.ajax({
      type: "POST",
      contentType: "application/json; charset=utf-8",
      url: "RequestDetail.aspx/postAsync",
      data: "{'reqSystem': '" + $('#ctl00_PlaceHolderMain_lblRequestSystem').text() + "', 'vendorNumber': '" + $('#ctl00_PlaceHolderMain_txtVendorNo').val() + "'}",
      dataType: "json",
      success: AjaxSucceeded,
      error: AjaxFailed
      });

这是背后的代码:

<System.Web.Services.WebMethod()> _
Public Shared Function postAsync(ByVal reqSystem As String, ByVal vendorNumber As String) As String
    Dim required = CheckForSpecialApproval(reqSystem, vendorNumber)
    Return required.ToString()
End Function

以下是我在Chrome控制台中的生产中看到的内容:

Production Chrome Console

这就是Dev上的样子:

Dev Chrome Console

我在我的生产服务器上检查了IIS中的mime类型,并且javascript和json的mime类型不存在所以我不得不创建它们,但它仍然无法正常工作。我用Google搜索到了这一点,我无法弄清楚问题是什么。

如果您需要任何其他信息,我很乐意提供。

请帮助。

提前致谢。

2 个答案:

答案 0 :(得分:1)

生产响应的大小奇怪地相同,并且远远大于开发响应(173KB对366B)。您应该调查该text/html响应的内容 - 内容实际上可能是以HTML格式化的错误消息。如果Chrome无法让您查看回复,请使用Fiddler。

答案 1 :(得分:1)

原来在生产web.config上缺少条目:

<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, &#xD;&#xA;                System.Web.Extensions, Version=3.5.0.0, Culture=neutral, &#xD;&#xA;                PublicKeyToken=31BF3856AD364E35">
  <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, &#xD;&#xA;                System.Web.Extensions, Version=3.5.0.0, Culture=neutral, &#xD;&#xA;                PublicKeyToken=31BF3856AD364E35">
    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, &#xD;&#xA;                System.Web.Extensions, Version=3.5.0.0, Culture=neutral, &#xD;&#xA;                PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, &#xD;&#xA;                    System.Web.Extensions, Version=3.5.0.0, Culture=neutral, &#xD;&#xA;                    PublicKeyToken=31BF3856AD364E35">
      <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, &#xD;&#xA;                System.Web.Extensions, Version=3.5.0.0, Culture=neutral, &#xD;&#xA;                PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
      <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, &#xD;&#xA;                System.Web.Extensions, Version=3.5.0.0, Culture=neutral, &#xD;&#xA;                PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
      <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, &#xD;&#xA;                System.Web.Extensions, Version=3.5.0.0, Culture=neutral, &#xD;&#xA;                PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
      <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, &#xD;&#xA;                System.Web.Extensions, Version=3.5.0.0, Culture=neutral, &#xD;&#xA;                PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
    </sectionGroup>
  </sectionGroup>
</sectionGroup>

<add name="ScriptModule" type="System.Web.Handlers.ScriptModule,  System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

感谢大家的时间和答案。