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         }
  • 相关阅读:
    ocx文件转换成C#程序引用的DLL
    CSS颜色代码 颜色值 颜色名字大全(转载)
    WinForm轻松实现自定义分页 (转载)
    如何:使用PicturBox实现类似淘宝网站图片的局部放大功能
    转载jQuery图片放大插件[twiPicZoom]
    LINQ查询返回DataTable类型
    最喜欢的VS 键盘快捷键摘抄
    Codeforces Round #336 (Div. 2)B 暴力 C dp D 区间dp
    Educational Codeforces Round 24 A 水 B stl C 暴力 D stl模拟 E 二分
    poj 1185 状态压缩
  • 原文地址:https://www.cnblogs.com/WQ1992/p/11804047.html
Copyright © 2011-2022 走看看