2

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

我有点纠结。

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

我不是在本地运行它,它在 3 个 Web 应用程序服务器上。2个有效,1个无效。

此调用在开发服务器上完美运行,开发测试服务器,但在生产服务器上失败。我在 Chrome 中检查了控制台,发现在我的 Dev 和 DevTest 环境中,ajax 调用正在返回application/json,但在生产环境中正在返回text/html。此外,在我的开发和开发测试服务器上,一切正常,我得到了它应该返回的 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 的控制台中看到的内容:

生产 Chrome 控制台

这就是 Dev 上的样子:

开发 Chrome 控制台

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

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

请帮忙。

提前致谢。

4

2 回答 2

1

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

于 2013-03-13T10:50:34.933 回答
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" />

感谢大家的时间和答案。

于 2013-03-13T11:10:31.237 回答