Silverlight冻结了GetRequestStreamAsync上的IE

时间:2015-11-25 09:28:19

标签: c# silverlight

我有以下Silverlight代码。它通过给定的网址(postData)将文件(url)上传到后端。

public async Task<HttpFileUploadResponse> PostFile(string url, byte[] postData, string fileName, bool isPDF) {
    HttpWebRequest request = null;
    Uri uri = new Uri(url);
    request = (HttpWebRequest)WebRequest.Create(uri);
    request.Method = "POST";
    request.ContentType = "multipart/form-data";

    using (Stream writeStream = await request.GetRequestStreamAsync()) {
        await writeStream.WriteAsync(postData, 0, postData.Length);
    }
    using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
    using (Stream responseStream = response.GetResponseStream())
    using (StreamReader readStream = new StreamReader(responseStream, System.Text.Encoding.UTF8)) {
        return ParseServerResponse(await readStream.ReadToEndAsync());
    }
}

此方法的问题是在到达行await request.GetRequestStreamAsync()时冻结Internet Explorer。 虽然类似的问题已经解决,例如:

我已按照建议的步骤操作,例如设置ContentLength,但结果是一样的。

此外,我还尝试将网址更改为与另一个后端相对应的网址,该后端当前正在使用我们拥有的其他Silverlight组件。这些组件也有await request.GetRequestStreamAsync(),但它们运行良好。

我试图更改contentType。我的同事们使用Fiddler来查看请求,但显然没有发送任何内容(我认为这是因为它冻结了)。

有关这里发生的事情的任何想法吗?

修改

我已经反编译了AsynCompatLibExtensions.cs和TaskExtensions.cs来复制GetRequestStreamAsync代码,以便在指令中包含一个带有日志的自定义克隆类。

我已经使用这个类重新编译了解决方案,奇怪的是我没有看到任何日志。因此,我认为它在进入GetRequestStreamAsync时会冻结,但在它到达内部的任何代码行之前都会冻结。

有什么想法吗?

0 个答案:

没有答案