OSS好几个都没有.Net示例,只有SDK

于是我就拿Java改成C#代码;使用前先去Nuget包管理器下载Aliyun.Acs.Core还有Aliyun.Acs.Sts;

在安装这个两个包的时候安装不了,可能因为是.Net Core的原因吧。

Nuget安装方式安装不了的,先去

https://github.com/aliyun/aliyun-openapi-net-sdk

下载这两个项目然后生成引用到自己项目中。

安装后复制下面的代码即可,记得要把bucketName改成自己bucket的名字

using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Sts.Model.V20150401;
using Aliyun.Acs.Core.Http;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Core; namespace Test
{
public class OssServer
{
private const string REGION_CN_HANGZHOU = "cn-hangzhou";
private const string STS_API_VERSION = "2015-04-01";
private const string AccessKeyID = "****你的AccessKeyID****";
private const string AccessKeySecret = "****你的AccessKeySecret****";
private const string RoleArn = "****你的RoleArn****";
private const int TokenExpireTime = ;
//这里是权限配置,请参考oss的文档
private const string PolicyFile = @"{
""Statement"": [
{
""Action"": [
""oss:PutObject""
],
""Effect"": ""Allow"",
""Resource"": [""acs:oss:*:*:bucketName/*"", ""acs:oss:*:*:bucketName""]
}
],
""Version"": ""1""
}";
private AssumeRoleResponse assumeRole(String accessKeyId, String accessKeySecret, String roleArn,
String roleSessionName, String policy, ProtocolType protocolType, long durationSeconds)
{
try
{
// 创建一个 Aliyun Acs Client, 用于发起 OpenAPI 请求
IClientProfile profile = DefaultProfile.GetProfile(REGION_CN_HANGZHOU, accessKeyId, accessKeySecret);
DefaultAcsClient client = new DefaultAcsClient(profile); // 创建一个 AssumeRoleRequest 并设置请求参数
AssumeRoleRequest request = new AssumeRoleRequest();
//request.Version = STS_API_VERSION;
request.Method = MethodType.POST;
//request.Protocol = protocolType; request.RoleArn = roleArn;
request.RoleSessionName = roleSessionName;
request.Policy = policy;
request.DurationSeconds = durationSeconds; // 发起请求,并得到response
AssumeRoleResponse response = client.GetAcsResponse(request); return response;
}
catch (ClientException e)
{
throw e;
}
} public StsTokenModel GetToken()
{
// 只有 RAM用户(子账号)才能调用 AssumeRole 接口
// 阿里云主账号的AccessKeys不能用于发起AssumeRole请求
// 请首先在RAM控制台创建一个RAM用户,并为这个用户创建AccessKeys // RoleArn 需要在 RAM 控制台上获取
// RoleSessionName 是临时Token的会话名称,自己指定用于标识你的用户,主要用于审计,或者用于区分Token颁发给谁
// 但是注意RoleSessionName的长度和规则,不要有空格,只能有'-' '_' 字母和数字等字符
// 具体规则请参考API文档中的格式要求
string roleSessionName = "alice-001"; // 必须为 HTTPS
try
{
AssumeRoleResponse stsResponse = assumeRole(AccessKeyID, AccessKeySecret, RoleArn, roleSessionName,
PolicyFile, ProtocolType.HTTPS, TokenExpireTime); return new StsTokenModel()
{
status = ,
AccessKeyId = stsResponse.Credentials.AccessKeyId,
AccessKeySecret = stsResponse.Credentials.AccessKeySecret,
Expiration = stsResponse.Credentials.Expiration,
Security = stsResponse.Credentials.SecurityToken
}; }
catch (ClientException e)
{
return new StsTokenModel() { status = Convert.ToInt32(e.ErrorCode) };
}
}
}
}
GetToken()函数返回的STS凭据数据模型
    public class StsTokenModel
{
public int status { get; set; } public string AccessKeyId { get; set; } public string AccessKeySecret { get; set; } public string Security { get; set; } public string Expiration { get; set; }
}
												

阿里云OSS搭建移动应用直传服务的.Net C#示例的更多相关文章

  1. 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程

    在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...

  2. ECS上nginx搭建反向代理通过内网访问阿里云OSS服务

    对于付不起钱的小伙计,为了给公司省钱,想尽一切招数.今天就来分享一个使用阿里云OSS存储搭配CDN使用的网站服务器部署方法. 简介 阿里云OSS 阿里云提供的一种文件存储方案,和我们以前接触的百度云B ...

  3. 记一次阿里云oss文件上传服务假死

    引言 记得以前刚开始学习web项目的时候,经常涉及到需要上传图片啥的,那时候都是把图片上传到当前项目文件夹下面,每次项目一重启图片就丢了.虽然可以通过修改/tomcat/conf/server.xml ...

  4. Python使用阿里云OSS服务

    Python使用阿里云OSS服务 前言: 在远程搭建了一个平台,通过改远程平台进行数据的采集,需要将数据内容传送至本地进行处理:为了实现该功能,考虑了阿里云的OSS对象储存的服务. 40G包月只需1元 ...

  5. angulaijs中的ng-upload-file与阿里云oss服务的结合,实现在浏览器端上传文件到阿里云(速度可以达到1.5M)

    2015-10-26 angularjs结合aliyun浏览器端oos文件上传加临时身份验证例子 在服务端获取sts 源码: public class StsServiceSample { // 目前 ...

  6. ECStore图片存储采用阿里云OSS(图片存储)服务

    主要功能:ECStore图片存储采用阿里云OSS(图片存储)服务   适用版本:ECStore 授权方式:授权域名使用,付费插件 联系方式: QQ 275553385  mail: jimingson ...

  7. 物联网架构成长之路(18)-接阿里云OSS服务

    1.申请/购买OSS服务 在阿里云上申请/购买OSS服务, 然后在会得AccessKeyID,AccessKeySecret,bucketName 这三个东西 2.增删改查 在pom.xml文件上增加 ...

  8. 构建基于阿里云OSS文件上传服务

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/50710132 <构建基于阿里云OSS文件上传服务> <构建基于OS ...

  9. 谷粒 | 10 | 阿里云OSS存储对象服务

    阿里云OSS对象存储服务 准备工作 1.在service模块新建子模块service_oss 2.引入pom.xml文件中引入oss服务依赖 <dependencies> <!--a ...

随机推荐

  1. APache POI emaple ()

    Business Plan The BusinessPlan application creates a sample business plan with three phases, weekly ...

  2. 解决centos yum安装"No package nginx available."问题

    问题原因: nginx位于第三方的yum源里面,而不在centos官方yum源里面 解决方法: 安装epel(Extra Packages for Enterprise Linux) a.去epel网 ...

  3. inter 也支持linux开发了

    http://www.intel.cn/content/www/cn/zh/intelligent-systems/bay-trail/atom-processor-e3800-family-over ...

  4. 远程调试 Asp.Net 项目

    项目部署到产品环境后,难免会发生一些故障,有一些可以在本地测试环境中直接重现,而有一些则无法重现.对于可以在本地测试环境中重现的Bug,开发人员往往能够很迅速地进行问题排查.而对于无法重现的Bug,就 ...

  5. linux 多个文件中查找字符串 hadoop 3 安装 调试

    http://www.cnblogs.com/iLoveMyD/p/4281534.html 2015年2月9日 14:36:38 # find <directory> -type f - ...

  6. mysql -=- DDL

    net start mysql mysql -uroot -p show databases use 数据库名 how tables --------------------------------- ...

  7. UWP开发入门系列笔记之(零):UWP的前世今生

    引言 在本篇文章中,可以掌握以下知识: 设备族群,如何决定目标设备 新的UI控件和新面板帮助你适应不同的设备特征 从Windows 8系统开始,微软就 引入了WindowsRT(Windows Run ...

  8. 如何判断http服务器是否支持range寻址

    如果向支持range寻址的http服务器发带range的请求 ,会有什么结果呢?是否有错误返回?数据怎么下载? 诸葛小炎fire | 浏览 569 次   您的回答被采纳后将获得: 系统奖励20(财富 ...

  9. Spring事物注意事项

    一.尽量用注解声明事务 过去开发喜欢用tx:advice+aop命名空间方式来配置事务,一次配置对满足切点规则的方法永久生效.但也可能因此导致事务滥用,在不需要用到事务的地方用了会影响系统的并发性能. ...

  10. bzoj 4571 美味 —— 主席树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 区间找异或值最大,还带加法,可以用主席树: 可以按位考虑,然后通过加上之前已经有的答案 ...