【问题标题】:WebClient Exception, does not support concurrent I/O operationsWebClient 异常,不支持并发 I/O 操作
【发布时间】:2012-05-29 13:34:51
【问题描述】:

我有一个静态类,它返回 webclient 的新实例

public static class WebAccess
{
    public static WebClient GetWebClient()
    {
        return new WebClient();
    }
}

然后我使用这个类来点击这样的页面

WebAccess.GetWebClient().DownloadString(new Uri("http://" + WLCDomainUrl + ConfigurationManager.AppSettings["urlClearCache"].ToString() + "/?id=" + Request.QueryString["id"] + "&Type=RC"));

我不想收到回复

但它大部分时间都在抛出异常

WebClient does not support concurrent I/O operations.

Stack Trace:

   at System.Net.WebClient.ClearWebClientState()
   at System.Net.WebClient.DownloadString(Uri address)
   at UpdateCache.ProcessLocationCacheRequest(String locId, Boolean isChain) in 

WebClient does not support concurrent I/O operations.

Stack Trace:

   at System.Net.WebClient.ClearWebClientState()
   at System.Net.WebClient.UploadString(Uri address, String method, String data)
   at System.Net.WebClient.UploadString(String address, String data)
   at CacheClassLibrary.ServerClass.APIServer.Create(String Id, String MobileWLCUrl) in 

有什么帮助吗??我无法确定这是我们的,因为我正在使用新的 Web 客户端实例为每个请求提供服务:/

应用同时收到多个请求。

【问题讨论】:

  • 从您所展示的内容来看,它在技术上应该是正确的。你能展示一个包含所有请求的更完整的代码示例吗?你确定你没有在代码的其他任何地方重用任何WebClient 实例吗?
  • @mellamokb 我只使用过 Web 客户端.....计划在某些部分使用 httpreq,因为需要在代码中进行一些异步调用

标签: c# .net file-io webclient stack-trace


【解决方案1】:

试试这个

public static class WebAccess
{
    WebClient instance;
    public static WebClient GetWebClient()
    {
        if (instance == null)
           instance = new WebClient();

        return instance;
    }
}

那么你只有一个 WebClient 类的实例

【讨论】:

  • 会有什么不同?我不会每次都给新实例,我想删除这个异常?会有帮助吗?我猜没有!
  • 切换到一个WebClient 实例会倒退一步,绝对不能解决问题。
  • 为什么单身人士是邪恶的/反模式:blogs.msdn.com/b/scottdensmore/archive/2004/05/25/140827.aspx 非常有趣的帖子,你应该阅读它:)
猜你喜欢
  • 2011-12-15
  • 2016-04-14
  • 1970-01-01
  • 2021-06-29
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多