Я знаю, что это 7 месяцев, но - попробуйте снять косую черту с URL-вызова в вызове $ .ajax.
Я думаю, что вы хотите: "http://localhost:63295/_services/Service2.svc/DoWork"
попробуйте это:
$("#calendar").fullCalendar({
events: {
url: 'http://localhost:63295/_services/Service2.svc/DoWork',
type: 'POST',
data: '{}',
error: function () {
alert('there was an error while fetching events!');
},
color: 'yellow', // a non-ajax option
textColor: 'black' // a non-ajax option
}
});
Также - рассмотрите возможность изменения bodystyle вашего параметра вызова Webinvoke BodyStyle на BodyStyle = WebMessageBodyStyle.WrappedRequest (я читал, что вы получите ошибку с простым переносом). И не уверен, что вы уже это делаете, но обязательно закодируйте начальные и конечные значения в вашем списке / массиве в виде меток времени Unix или одного из допустимых типов дат.
ваш web.config хорош.
Вот кое-что, что я протестировал (.net 4.0) с вышеупомянутым вызовом ajax fullcalendar, за исключением того, что я использовал список, а не массив - я предполагаю, что вы можете читать в стандартные даты, которые тоже не будут работать, поэтому есть здесь функция для преобразования дат в метки времени Unix на лету, просто избегайте их, если вы уже работаете с метками времени Unix.
[WebInvoke(Method="POST", BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)]
[OperationContract]
public List<AELIST> DoWork()
{
SqlConnection sqlconn = new SqlConnection();
sqlconn.ConnectionString = ConfigurationManager.ConnectionStrings["YourConnNameInWebConfig"].ConnectionString;
sqlconn.Open();
string sqlstring = "Select * from YourTable";
SqlCommand sqlcomm = new SqlCommand(sqlstring, sqlconn);
SqlDataReader sreader = sqlcomm.ExecuteReader();
List<AELIST> AE = new List<AELIST>();
while (sdr.Read())
{
DateTime dsx = Convert.ToDateTime(sdr["AE_StartTime"]);
Double mystart = ConvertToTimestamp(dsx);
DateTime dex = Convert.ToDateTime(sdr["AE_EndDateTime"]);
Double myend = ConvertToTimestamp(dex);
AELIST AEEntry = new AELIST<>();
AEEntry.title = sdr["AE_EmployeeID"].ToString() + " " + sdr["AE_EmployeeName"].ToString() + " " + sdr["AE_EventCode"].ToString();
AEEntry.start = mystart.ToString();
AEEntry.end = myend.ToString();
AE.Add(AEEntry);
}
sqlconn.Close();
sdr.Close();
sreader.Dispose();
sqlcomm.Dispose();
return AE;
}
private double ConvertToTimestamp(DateTime value)
{
TimeSpan span = (value - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime());
return (double)span.TotalSeconds;
}
public class AELIST
{
public string title {get; set;}
public string start {get; set;}
public string end {get; set;}
}