मैंने सब कुछ करने की कोशिश की है और मुझे पता नहीं चल रहा है कि यह त्रुटि क्यों होती है।बिज़ारे HttpWebResponse त्रुटि: सर्वरप्रोटोकॉल उल्लंघन
पृष्ठभूमि: मैं एक iPad आवेदन, MonoTouch में लिखा है और मैं एक धागा है कि पृष्ठभूमि में चलता है, और प्रत्येक 15 सेकंड मैं सर्वर के साथ डेटा सिंक। यह धागे के पहले कुछ पुनरावृत्तियों को काम करता है, लेकिन अंततः मुझे निम्नलिखित स्टैक ट्रेस मिलता है।
An exception occured: System.Net.WebException: Error getting response stream (ReadDone4): ServerProtocolViolation ---> System.FormatException: Input string was not in the correct format
at System.UInt32.Parse (System.String s) [0x00010] in /Developer/MonoTouch/Source/mono/mcs/class/corlib/System/UInt32.cs:405
at System.Net.WebConnection.GetResponse (System.Byte[] buffer, Int32 max) [0x000ba] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/WebConnection.cs:565
at System.Net.WebConnection.ReadDone (IAsyncResult result) [0x00095] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/WebConnection.cs:446
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) [0x0005e] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:819
at System.Net.HttpWebRequest.GetResponse() [0x0000e] in /Developer/MonoTouch/Source/mono/mcs/class/System/System.Net/HttpWebRequest.cs:827
at SyncService.REST.RestClient.Execute[IEnumerable`1] (SyncService.REST.RestRequest request) [0x00079] in /Users/Chris/Compass/SyncService/REST/RestClient.cs:42
मैं डिफ़ॉल्ट विन्यास के साथ एक IIS वेबसर्वर बात कर रहा हूँ।
public RestResponse<T> Execute<T>(RestRequest request){
var restResponse = new RestResponse<T>();
var serializer = new JavaScriptSerializer();
var urlPath = _baseUrl + "/" + request.Resource;
var httpRequest = (HttpWebRequest)HttpWebRequest.Create(new Uri(urlPath));
httpRequest.Headers = request.Headers;
Authenticator.Authenticate(httpRequest);
httpRequest.Method = request.Method.ToString();
if (request.Method == Method.POST)
SetPostData(httpRequest, request);
HttpWebResponse httpResponse = null;
try{
httpResponse = (HttpWebResponse) httpRequest.GetResponse();
var reader = new StreamReader(httpResponse.GetResponseStream());
var responseString = reader.ReadToEnd();
reader.Close();
restResponse.StatusCode = httpResponse.StatusCode;
restResponse.Headers = httpResponse.Headers;
restResponse.Data = serializer.Deserialize<T>(responseString);
restResponse.ResponseStatus = ResponseStatus.Completed;
}
catch(WebException e){
restResponse.ResponseStatus = ResponseStatus.Error;
restResponse.ErrorMessage = e.Message;
restResponse.ErrorException = e;
var webResponse = (HttpWebResponse) e.Response;
if (webResponse != null){
restResponse.StatusCode = webResponse.StatusCode;
restResponse.Headers = webResponse.Headers;
}
if (restResponse.StatusCode != HttpStatusCode.NotModified)
Console.WriteLine("An exception occured: " + e + "\r\n");
}catch (Exception ex) {
restResponse.ResponseStatus = ResponseStatus.Error;
restResponse.ErrorMessage = ex.Message;
restResponse.ErrorException = ex;
}
if (httpResponse != null)
httpResponse.Close();
return restResponse;
}
कृपया मदद: यहाँ विधि मैं बोल रहा हूँ है। मुझे नहीं पता क्या करना है। Google कुछ भी नहीं दिखाता है।
त्रुटि दिखाने से पहले मैं 22 सफल अनुरोध करने में सक्षम हूं।
संपादित मैं इसे एक सर्वर मुद्दे किया जा रहा करने के लिए नीचे संकुचित है। यह एएसपीनेट एमवीसी है और अपवाद तब होता है जब मैं क्लाइंट को 304 भेजता हूं। सर्वर कोड देखें:
private void ServeHttpStatusCode() {
Response.StatusCode = 304;
Response.Status = "304 Not Modified";
Response.StatusDescription = "The resource you are requesting has not been modified";
Response.ContentType = "application/json";
Response.Write("{\"Error\":\"The resource you are requesting has not been modified\"}");
Response.End();
Response.Close();
}
इसका मतलब है कि सर्वर अच्छी तरह से अभिनय नहीं कर रहा है :) क्या आप कच्चे प्रतिक्रिया के बारे में देखने के लिए फिडलर या एथेरियल जैसे HTTP स्नफ़फर का उपयोग कर सकते हैं? – Skurmedel
यह 22 बार काम कर रहा है, फिर बंद हो जाता है। अगर मैं अपना ऐप मारता हूं और शुरू करता हूं ... सभी 22 अनुरोधों के लिए अच्छा है। आप अभी भी सर्वर पर सोचते हैं? –
उपरोक्त संपादन देखें। –