我有 2 个 Intranet 站点:
http://intranetv1/
http://intranetv2/
v1 基于 .NET 1.1,v2 基于 .NET 3.5
在 v1 上,我创建了一个网页,我正在尝试使用一些 jQuery 来访问我在 v2 上创建的 web 服务。由于 Web 服务是使用 .NET 3.5 编码的,因此我无法在 v1 上使用该 Web 服务。
无论如何,我假设在这种情况下我应该使用 JSONP,但是每次我运行页面时,ajax 部分都不起作用,在谷歌浏览器中,我只会收到 500 错误消息,如取消。
我无法弄清楚为什么会这样。
这是 v1 .NET 1.1 服务器上的 jQuery:
function selectedDateTime(strDate, strHours, strMinutes) {
$.ajax({
type: 'POST',
url: 'http://intranetv2/webservices/meetingrooms.asmx/GetDayCount',
data: '{ strMeetingDate:"' + strDate + " " + strHours + ":" + strMinutes + ":00" + '" }',
contentType: 'application/json; charset=utf-8',
dataType: 'jsonp',
success: function(department) {
alert("success");
},
error: function(xhr, status, error) {
alert("error");
}
});
return strDate + "---" + $("#txtDate").val();
}
如您所见,我正在尝试访问 v2 .NET 3.5 服务器上的 .asmx 文件。
当我运行它时,谷歌浏览器给我一个 500 服务器错误,并说 asmx 文件已被取消,然后我收到一个警报,在 selectedDateTime 函数结束时显示日期警报。所以函数正在执行,但是ajax脚本的成功或错误部分根本没有被执行。
我收到以下回复:
Request URL:http://intranetv2/webservices/meetingrooms.asmx/GetDayCount?callback=jQuery110100248512071557343_1372419413424&{%20strMeetingDate:%2228/06/2013%2006:00:00%22%20}&_=1372419413425
Request Method:GET
Status Code:500 Internal Server Error
Request Headers
GET /webservices/meetingrooms.asmx/GetDayCount?callback=jQuery110100248512071557343_1372419413424&{%20strMeetingDate:%2228/06/2013%2006:00:00%22%20}&_=1372419413425 HTTP/1.1
Host: intranetv3
Connection: keep-alive
Authorization: Negotiate TlRMTVNTUAADAAAAGAAYAHYAAAAYABgAjgAAABIAEgBIAAAABgAGAFoAAAAWABYAYAAAAAAAAACmAAAABYKIogUBKAoAAAAPQgBQAEMATwBMAEwASQBOAFMAaQB4AGYASQBYAEYALQBHAEIASgBUAEIAMgBKAJBkNIpqc7C+AAAAAAAAAAAAAAAAAAAAAIGOnhAoLt95s2HzXVTV7AvYOt1c9vbdJQ==
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
DNT: 1
Referer: http://intranetv1/meeting/meeting_room_bookings_2_1.aspx
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Query String Parametersview sourceview URL encoded
callback:jQuery110100248512071557343_1372419413424
{ strMeetingDate:"28/06/2013 06:00:00" }:
_:1372419413425
Response Headers
HTTP/1.1 500 Internal Server Error
Date: Fri, 28 Jun 2013 11:36:57 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/plain; charset=utf-8
Content-Length: 406
这是我在 Google Chrome 开发人员工具中收到的错误消息的屏幕截图:
单击此处查看完整分辨率。
这是 .asmx 代码:
[WebMethod()]
public double GetDayCount(string strMeetingDate)
{
string[] strDateAndTime = strMeetingDate.Split(' ');
string[] strStartDateParts = strDateAndTime[0].Split('/');
string[] srtStartTimeParts = strDateAndTime[1].Split(':');
int year = Int32.Parse(strStartDateParts[2]);
int month = Int32.Parse(strStartDateParts[1]);
int day = Int32.Parse(strStartDateParts[0]);
int hour = Int32.Parse(srtStartTimeParts[0]);
int min = Int32.Parse(srtStartTimeParts[1]);
int sec = Int32.Parse(srtStartTimeParts[2]);
DateTime meetingDate = new DateTime(year, month, day, hour, min, sec);
using (connection = new SqlConnection(ConfigurationManager.AppSettings["connString"]))
{
using (command = new SqlCommand("intranet.dbo.BusinessHours", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@meeting_date", SqlDbType.DateTime).Value = meetingDate;
connection.Open();
using (reader = command.ExecuteReader())
{
reader.Read();
return (double)reader["hours"];
}
}
}