Hoi allemaal,
Op mijn werk heb ik een applicatie geschreven die de planning voor mijn collega's uit Exchange Server 2007 haalt, en deze door middel van een Flex frontend laat zien.
Helaas werkt de applicatie door onduidelijke redenen van de ene op de andere dag niet meer
Na veel testen kwam ik erachter dat er geen XML meer binnenkomt uit Exchange. De XML bevat een NullReferenceException.
De fout treedt op in regel 66. Ik vermoed dat het met de GetUserAvailability functie te maken heeft.
Mijn code (is C# code, let niet op de PHP tags er omheen, dit was alleen om de highlighting op het forum in te schakelen):
Het rare is dat deze code altijd heeft gewerkt. Heb ook andere voorbeelden van MSDN geprobeerd en ook bij die voorbeelden komt er geen XML data binnen.
Zou dit aan de Exchange Server (of een specifieke instelling) kunnen liggen? Ik weet het dus echt niet meer (en de systeembeheerder heeft ook geen idee....)
Op mijn werk heb ik een applicatie geschreven die de planning voor mijn collega's uit Exchange Server 2007 haalt, en deze door middel van een Flex frontend laat zien.
Helaas werkt de applicatie door onduidelijke redenen van de ene op de andere dag niet meer
Na veel testen kwam ik erachter dat er geen XML meer binnenkomt uit Exchange. De XML bevat een NullReferenceException.
De fout treedt op in regel 66. Ik vermoed dat het met de GetUserAvailability functie te maken heeft.
Mijn code (is C# code, let niet op de PHP tags er omheen, dit was alleen om de highlighting op het forum in te schakelen):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
| public int[] getSchedule(string date,string email) { // Create the binding and set the credentials. esb = new ExchangeServiceBinding(); esb.Credentials = new NetworkCredential("gebruiker", "wachtwoord", "domein"); esb.Url = @"http://servernaam/EWS/Exchange.asmx"; esb.RequestServerVersionValue = new RequestServerVersion(); esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1; int[] output = { }; // Identify the time to compare free/busy information. Duration duration = new Duration(); DateTime startTime = Convert.ToDateTime(date); DateTime endTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, 18, 0, 0); duration.StartTime = startTime; duration.EndTime = endTime; // Identify the options for comparing free/busy information. FreeBusyViewOptionsType fbViewOptions = new FreeBusyViewOptionsType(); fbViewOptions.TimeWindow = duration; fbViewOptions.RequestedView = FreeBusyViewType.MergedOnly; fbViewOptions.RequestedViewSpecified = true; fbViewOptions.MergedFreeBusyIntervalInMinutes = 15; fbViewOptions.MergedFreeBusyIntervalInMinutesSpecified = true; MailboxData[] mailboxes = new MailboxData[1]; mailboxes[0] = new MailboxData(); // Identify the user mailbox to review for free/busy data. EmailAddress emailAddress = new EmailAddress(); emailAddress.Address = email; mailboxes[0].Email = emailAddress; mailboxes[0].ExcludeConflicts = false; // Make the request. GetUserAvailabilityRequestType request = new GetUserAvailabilityRequestType(); // Set the time zone of the request. request.TimeZone = new SerializableTimeZone(); request.TimeZone.Bias = -60; request.TimeZone.StandardTime = new SerializableTimeZoneTime(); request.TimeZone.StandardTime.Bias = 0; request.TimeZone.StandardTime.DayOfWeek = DayOfWeekType.Sunday.ToString(); request.TimeZone.StandardTime.DayOrder = 1; request.TimeZone.StandardTime.Month = 11; request.TimeZone.StandardTime.Time = "02:00:00"; request.TimeZone.DaylightTime = new SerializableTimeZoneTime(); request.TimeZone.DaylightTime.Bias = -60; request.TimeZone.DaylightTime.DayOfWeek = DayOfWeekType.Sunday.ToString(); request.TimeZone.DaylightTime.DayOrder = 2; request.TimeZone.DaylightTime.Month = 3; request.TimeZone.DaylightTime.Time = "02:00:00"; // Add the mailboxes to the request. request.MailboxDataArray = mailboxes; // Add the view options to the request. request.FreeBusyViewOptions = fbViewOptions; try { // Send the request and get the response. GetUserAvailabilityResponseType response = esb.GetUserAvailability(request); // Access free/busy information. if (response.FreeBusyResponseArray.Length < 1) { throw new Exception("No free/busy response data available."); } else { foreach (FreeBusyResponseType fbrt in response.FreeBusyResponseArray) { if (fbrt.ResponseMessage.ResponseClass == ExchangeWebServices.ResponseClassType.Error) { } else { // Show the free/busy stream. FreeBusyView fbv = fbrt.FreeBusyView; string input = fbv.MergedFreeBusy; output = new int[input.Length]; for (int i = 0; i < input.Length; i++) { int status = Convert.ToInt16(input.Substring(i, 1)); if (i < 2 || (i > 17 && i < 20) || i > 35) { // if (status == 0 || status == 3) // { output[i] = 3; // } } else { output[i] = status; } } } } } } catch (Exception e) { // Perform error processing. HttpContext.Current.Response.Write(e.Message); } //HttpContext.Current.Response.Write(output.ToString()); return output; } |
Het rare is dat deze code altijd heeft gewerkt. Heb ook andere voorbeelden van MSDN geprobeerd en ook bij die voorbeelden komt er geen XML data binnen.
Zou dit aan de Exchange Server (of een specifieke instelling) kunnen liggen? Ik weet het dus echt niet meer (en de systeembeheerder heeft ook geen idee....)
[ Voor 157% gewijzigd door whoami op 13-10-2008 12:01 ]
Daikin 4MXM68A2V1B9 + FTXA50C2V1BB + 2x FTXM25A5V1B + FTXM20A5V1B. SolarEdge 13960 Wp PV array + SE9K inverter