代码部分:

1.新建一个控制台程序

2.nuget安装包和项目引用.Core

3.AbpSetting表

4.修改配置

代码:

--AppSettingProvider.cs

// AppSettingProvider.cs using System.Collections.Generic;
using System.Linq;
using Abp.Configuration;namespace DRMS.Configuration
{public class AppSettingProvider : SettingProvider{private readonly ISettingStore _settingStore;public AppSettingProvider(ISettingStore settingStore){_settingStore = settingStore;}public override IEnumerable<SettingDefinition> GetSettingDefinitions(SettingDefinitionProviderContext context){var allSettings = _settingStore.GetAllList(null, null);return allSettings.Select(x => new SettingDefinition(x.Name, string.Empty));}}
}

--IStorage.cs

//IStorage.csusing System;
using System.Collections.Generic;
using System.IO;
using System.Text;namespace DRMS.Storage
{public interface IStorage{string PutObject(Stream fileStream, string fileName, out string key);void DeleteObject(string key);}
}

--AliyunStorage.cs

//AliyunStorage.csusing Abp.Configuration;
using Aliyun.OSS;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;namespace DRMS.Storage
{public class AliyunStorage : IStorage{private readonly string _endpoint;private readonly string _accessKeyId;private readonly string _accessKeySecret;private readonly string _bucketDomain;private readonly string _bucketName;public AliyunStorage(ISettingManager settingManager){_endpoint = settingManager.GetSettingValue("Oss.endpoint");_accessKeyId = settingManager.GetSettingValue("Oss.accessKeyId");_accessKeySecret = settingManager.GetSettingValue("Oss.accessKeySecret");_bucketName = settingManager.GetSettingValue("Oss.bucketName");_bucketDomain = settingManager.GetSettingValue("Oss.bucketDomain");}public string PutObject(Stream fileStream, string fileName, out string key){OssClient client = new OssClient(_endpoint, _accessKeyId, _accessKeySecret);key = Guid.NewGuid().ToString();int extentionIndex = fileName.LastIndexOf('.');if (extentionIndex > 0){key += $"{fileName.Substring(extentionIndex)}";}var result = client.PutObject(_bucketName, key, fileStream);return $"{_bucketDomain}/{key}";}public void DeleteObject(string key){OssClient client = new OssClient(_endpoint, _accessKeyId, _accessKeySecret);client.DeleteObject(_bucketName, key);}}
}

报错:

ERROR 2020-11-18 14:02:18,349 [47   ] Mvc.ExceptionHandling.AbpExceptionFilter - ComponentActivator: could not instantiate DRMS.Storage.AliyunStorage
Castle.MicroKernel.ComponentActivator.ComponentActivatorException: ComponentActivator: could not instantiate DRMS.Storage.AliyunStorage---> System.Exception: Could not instantiate DRMS.Storage.AliyunStorage.---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.---> Abp.AbpException: There is no setting defined with name: Oss.endpointat Abp.Configuration.SettingDefinitionManager.GetSettingDefinition(String name)at Abp.Configuration.SettingManager.GetSettingValueInternal(String name, Nullable`1 tenantId, Nullable`1 userId, Boolean fallbackToDefault)at Abp.Configuration.SettingManager.GetSettingValue(String name)at Castle.Proxies.SettingManagerProxy.GetSettingValue_callback(String name)at Castle.Proxies.Invocations.ISettingManager_GetSettingValue.InvokeMethodOnTarget()at Castle.DynamicProxy.AbstractInvocation.Proceed()at Castle.DynamicProxy.AbstractInvocation.Proceed()at Castle.Proxies.SettingManagerProxy.GetSettingValue(String name)at DRMS.Storage.AliyunStorage..ctor(ISettingManager settingManager) in F:\DRMS\riching-drms-service\src\DRMS.Storage\AliyunStorage.cs:line 21--- End of inner exception stack trace ---at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture)at Castle.Core.Internal.ReflectionUtil.Instantiate[TBase](Type subtypeofTBase, Object[] ctorArgs)--- End of inner exception stack trace ---at Castle.Core.Internal.ReflectionUtil.Instantiate[TBase](Type subtypeofTBase, Object[] ctorArgs)at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstanceCore(ConstructorCandidate constructor, Object[] arguments, Type implType)--- End of inner exception stack trace ---at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstanceCore(ConstructorCandidate constructor, Object[] arguments, Type implType)at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context, ConstructorCandidate constructor, Object[] arguments)

这错误时因为AppSettingProvider.cs 没配置好

在Abp 使用 阿里云的oss相关推荐

  1. 阿里云存储OSS中设置上传文件content type

    阿里云存储OSS中设置上传文件ContentType 如果你使用浏览器上传文件,则浏览器会自动在header中设置正确地content type,然后对文件的访问会得到正确地回应. 如果采用编程的方式 ...

  2. 使用阿里云的oss对图片加水印并且字体大小自适应(阿里云oss暂不支持字体大小自适应)

    使用阿里云的oss对图片加水印并且字体大小自适应(阿里云oss暂不支持字体大小自适应) 背景: 首先阿里云oss云对象存储是不能做到字体大小自适应的,因为在开发中我们的图片上传的尺寸是做不到固定大小宽 ...

  3. 基于阿里云的OSS上传从简单实现 到项目业务应用(一)入门了解篇

    使用阿里云OSS 功能的准备工作 环境准备 环境要求 使用Java 1.8及以上版本. 查看版本 执行命令java -version查看Java版本. 安装方法一: 如果使用Maven 安装阿里云OS ...

  4. 使用阿里云的OSS图片上传,这里是用的上传网络流

    使用阿里云的OSS图片上传,这里是用的上传网络流 思路: /** 文件上传到OSS 上传网络流 以下代码用于上传网络流: 1.通过element的el-upload插件,通过action发送请求到后台 ...

  5. SpringBoot集成阿里云存储OSS服务

    前言 该文章会先简单的介绍一下阿里云的OSS存储,然后演示如何在SpringBoot项目中集成OSS,每一步都有记录,保证初学者也能看懂. 文章目录 前言 1.阿里云存储OSS是什么? 2.Sprin ...

  6. 文件大于50M的上传到阿里云的OSS时浏览器中会出现如下错误提示:Failed to load resource: net::ERR_CONNECTION_RESET解决

    近期做文件上传到阿里云的OSS时,开始上传小文件没有任何问题,后来无意间上传了一些大于50M的文件, 浏览器中会出现如下错误提示:Failed to load resource: net::ERR_C ...

  7. 阿里云 CDN + OSS 解决方案

    前言 直接使用阿里云的OSS+CDN的方案有几大好处: 成本低廉.OSS+CDN部署自己的网站每个月的花费远比自己买ECS服务器部署网站花费要少得多 大幅降低运维成本.直接使用现成的云服务了,无需花精 ...

  8. 对于阿里云的oss上传本地图片的相关注意点

    #先在阿里云购买储存空间 我的结果如下: 然后下载相关的SDK,下面是C++相关SDK包: https://help.aliyun.com/document_detail/106216.html?sp ...

  9. canvas里 阿里云服务器oss图片跨域处理

    图片img标签默认是可以跨域的,但是canvas中不允许跨域,所以在使用html2canvas.js将html代码转图片时,html中如果存在跨域图片就会报错.需要后台在阿里云上配置图片允许跨域.前端 ...

最新文章

  1. 天气预报都哪儿去了?
  2. springmvc简述
  3. freemarker模板最小案例实现
  4. Web前端开发笔记——第四章 JavaScript程序设计 第五节 数组
  5. 【FPGA Verilog】实验二:key按键基础实验
  6. (后端)解决code唯一码(java)简便方法
  7. sidirect 连接西门子_Intouch 与 CP343-1 通讯设置
  8. java屏幕共享实现原理_远程桌面共享技术实现
  9. steam自定义信息框_如何设置和自定义Steam控制器
  10. Nginx 重定向所有子域名到www
  11. vue实现结算淘宝购物车效果
  12. ftp客户端中文乱码问题解决
  13. 红尘梦落,卧醉千年,当所有的繁华散尽
  14. 尺寸工程分析软件-尺寸公差分析软件-尺寸链计算软件
  15. MOD04_3K 产品使用方の法学习
  16. Android图形shape的gradient渐变色背景
  17. 中秋佳节│以码为笔,绘合家团圆
  18. 自然对数底数e的由来
  19. ARX中非模态对话框
  20. 多地力推企业上云,大力发展工业互联网|中机智库

热门文章

  1. typed.js_对CircleCI的“为什么我们不再使用Core.typed”的答案
  2. 常用电子元器件的图解和作用
  3. 配置 Nginx 和 frps 共存 80/443 端口及泛域名支持教程
  4. K近邻法之kd树及其Python实现
  5. HP LaserJet M1319f 激光一体机更新固件
  6. 破茧成蝶-用户体验设计师的成长之路之一设计理念
  7. 树莓派基础实验31:MPU6050陀螺仪加速度传感器实验
  8. Multisim教室空座信息查询系统仿真
  9. 如何成为经济自由的创业者?翼牛科技手把手来教你!
  10. 【Python入门基础】网络编程