zoukankan      html  css  js  c++  java
  • HttpContext.Current.Server.MapPath("") 未将对象设置到引用的

    在多线程中使用该方法获取目录报错:未将对象设置到引用

     1 #region 上传图片到腾讯
     2         public async Task<Result> UploadImageToWX(string background_pic_url)
     3         {
     4             var _result = new Result();
     5             var token = GetWxGhAuthorizerAccessToken(AbpSession.ShopId);
     6             if (!token.success)
     7             {
     8                 _result.Code = 0;
     9                 _result.Message = token.message;
    10                 return _result;
    11             }
    12 
    13             try
    14             {
    15                 var filename = background_pic_url.Substring(background_pic_url.LastIndexOf('/'));
    16                 if (filename.LastIndexOf('.') < 0)
    17                 {
    18                     _result.Code = 0;
    19                     _result.Message = "图片错误";
    20                     return _result;
    21                 }
    22                 var suffix = filename.Substring(filename.LastIndexOf('.'));
    23 
    24                 //报错代码
    25                 //string path = System.Web.HttpContext.Current.Server.MapPath("/upload/images/" + DateTime.Now.ToString("yyyyMM"));
    26 
    27                 //解决方案
    28                 string path = MapPath("/upload/images/" + DateTime.Now.ToString("yyyyMM"));
    29 
    30                 if (!Directory.Exists(path))
    31                 {
    32                     Directory.CreateDirectory(path);
    33                 }
    34                 string file = path + "/" + Guid.NewGuid().ToString("n") + suffix;
    35 
    36                 Uri uri = new Uri(background_pic_url);
    37                 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
    38                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    39                 Stream resStream = response.GetResponseStream();//得到图片数据流
    40                 Bitmap sourcebm = new Bitmap(resStream);//初始化Bitmap图片
    41                 sourcebm.Save(file);
    42 
    43                 var tokenResult = token.data as token_model;
    44 
    45                 var uploadResult = await Senparc.Weixin.MP.AdvancedAPIs.MediaApi.UploadImgAsync(tokenResult.token, file);
    46                 _result.Code = 1;
    47                 _result.Data = uploadResult;
    48             }
    49             catch (Exception ex)
    50             {
    51 
    52                 _result.Message = ex.Message;
    53 
    54                 _result.Code = 0;
    55 
    56             }
    57 
    58 
    59             return _result;
    60         }
    61         #endregion

    解决方法:

     1     /// <summary>
     2         /// 获取文件路径
     3         /// </summary>
     4         /// <param name="strPath"></param>
     5         /// <returns></returns>
     6         private string MapPath(string strPath)
     7         {
     8             if (HttpContext.Current != null)
     9             {
    10                 return HttpContext.Current.Server.MapPath(strPath);
    11             }
    12             else //非web程序引用             
    13             {
    14                 strPath = strPath.Replace("/", "\");
    15                 if (strPath.StartsWith("\"))
    16                 {
    17                     strPath = strPath.TrimStart('\');
    18                 }
    19                 return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
    20             }
    21         }
  • 相关阅读:
    arcgis10.2 sde配置
    创建只读账号oracle
    oracle 的tnsnames.ora,listener.ora
    gp工具的许可
    复制整个数据库
    显示二维表格的位置计算
    windows文件名格式的中文+数字混合字符串排序
    supergridcontrol记录,分页
    outlook-由于本机的限制,该操作已被取消。请与系统管理员联系。
    自定义单元格式
  • 原文地址:https://www.cnblogs.com/WQ1992/p/11804047.html
Copyright © 2011-2022 走看看