Я использую следующий код на Windows Phone:
string baseAddress = tcAddress + "/Api/Audio/RegisterAudioThoughtUpload/";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(baseAddress);
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
int total = 1633;
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
string json = "{ \"AnonymousUserId\":\"" + Guid.NewGuid().ToString() + "\", \"TotalSize\":\"" + total.ToString() + "\" }";
streamWriter.Write(json);
streamWriter.Close();
}
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
int statusCode = (int)response.StatusCode; \\At this point response is null
StreamReader reader = new StreamReader(response.GetResponseStream());
string results = reader.ReadToEnd();
response.Close();
}
В основном я пытаюсь отправить упакованные в json guid и int в действие mvc3.
На стороне сервера действие обработки:
[HttpPost]
public JsonResult RegisterAudioThoughtUpload(string AnonymousUserId, int TotalSize)
{
var aUId = Guid.Parse(AnonymousUserId);
return new JsonResult {Data = Guid.NewGuid()};
}
Fiddler2, который регистрирует сообщение, показывает, что сервер предоставляет клиенту ожидаемый ответ:
![fiddler2](https://i.stack.imgur.com/nrm7G.png)
Но на клиенте звонок на GetResponse()
просто истекает, и ответ никогда не возвращается.
Поскольку это Windows Phone, функция GetResponse () реализована следующим образом:
private const int DefaultRequestTimeout = 15000;
public static HttpWebResponse GetResponse(this HttpWebRequest request)
{
var dataReady = new AutoResetEvent(false);
HttpWebResponse response = null;
var callback = new AsyncCallback(delegate(IAsyncResult asynchronousResult)
{
response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
dataReady.Set();
});
request.BeginGetResponse(callback, request);
if (dataReady.WaitOne(DefaultRequestTimeout))
{
return response;
}
return null;
}
Почему я не получаю экземпляр HttpWebResponse
, хотя через прокси я вижу, что он отправляется?