华为云用户手册

  • 数据类型 表1 数值类型 序号 Oracle数据类型 GaussDB数据库 是否支持 差异 1 NUMBER [ ( p [ , s ] ) ] 支持,有差异 精度和实现存在差异。 2 FLOAT [ ( p ) ] 支持 - 3 LONG 不支持 - 4 BINARY_FLOAT 不支持 - 5 BINARY_DOUBLE 支持 - 表2 日期时间类型 序号 Oracle数据类型 GaussDB 数据库是否支持 差异 1 DATE 支持,有差异 精度有差异。 2 TIMESTAMP [ ( fractional_seconds_precision ) ] 支持 - 3 TIMESTAMP [ ( fractional_seconds_precision ) ] WITH TIME ZONE 支持,有差异 GaussDB的timestamptz等价于Oracle的timestampwithloacltimezone,缺少Oracle对应的timestamptz类型。 时区更新:部分国家或地区因为政治、经济、战争等因素经常会更新时区信息, 数据库系统也因此常常需要同步修改时区文件以确保时间内容的正确性。 GaussDB时区类型目前只涉及 timestamp with timezone, 当新的时区文件生效时,不会对已有的老数据进行变更,新数据会随时区文件信息进行同步调整。在这点上和O的同类型数据能力有差异。 4 TIMESTAMP [ ( fractional_seconds_precision ) ] WITH LOCAL TIME ZONE 不支持 - 5 INTERVAL YEAR [ ( year_precision ) ] TO MONTH 支持 - 6 INTERVAL DAY [ ( day_precision ) ] TO SECOND [ ( fractional_seconds_precision ) ] 支持 - 表3 字符类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 VARCHAR2 ( size [ BYTE | CHAR ] ) 支持,有差异 size单位为字节,最大10MB。 2 NVARCHAR2 ( size ) 支持,有差异 VARCHAR2(n)类型的别名。 3 CHAR [ ( size [ BYTE | CHAR ] ) ] 支持,有差异 size单位为字节,最大10MB。 4 NCHAR [ ( size ) ] 支持,有差异 size单位为字节,最大10MB。 5 CLOB 支持,有差异 不支持定位器概念。 6 NCLOB 不支持 - 表4 二进制类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 RAW ( size ) 支持,有差异 size是指字节长度建议值,不会用于校验输入raw类型的字节长度。 2 LONG RAW 不支持 - 3 BLOB 支持,有差异 - 4 BFILE 不支持 - 表5 ROWID类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 ROWID 不支持 - 2 UROWID 不支持 - 表6 用户自定义类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 对象类型 不支持 - 2 REF数据类型 不支持 - 3 可变数组 支持 - 4 嵌套表 支持 - 表7 伪类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 anytype 不支持 - 2 anydata 不支持 - 3 anydataset 不支持 - 表8 xml类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 XMLType 支持,有差异 不支持部分操作。 2 URIType 不支持 - 表9 空间类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 SDO_GEOMETRY 不支持 - 2 SDO_TOPO_GEOMETRY 不支持 - 3 SDO_GEORASTER 不支持 - 表10 锁模式 级别 Oracle锁模式 GaussDB锁模式 备注锁模式 - - NULL GaussDB的NULL表示未被赋予锁,与Oracle的0级锁对应。 0 none INVALID GaussDB的INVALID表示被赋予了非法锁。仅在运行过程中出现了GaussDB无法识别的锁时会被赋予INVALID锁。 1 null AccessShare - 2 RS RowShare - 3 RX RowExclusive - 4 S ShareUpdateExclusive - 5 SRX Share - 6 \ ShareRowExclusive - 7 X Exclusive - 8 \ AccessExclusive -
  • 数据库对象 表16 schema对象 序号 Oracle数据库 GaussDB数据库 差异 1 分析视图 不支持 - 2 属性维度 不支持 - 3 集群 支持 - 4 约束 支持 - 5 数据库链接 支持 - 6 数据库触发器 支持 - 7 尺寸 支持 - 8 外部过程库 不支持 - 9 分层结构 不支持 - 10 索引组织表 不支持 - 11 索引 支持 - 12 索引类型 不支持 - 13 java类 不支持 - 14 java资源 不支持 - 15 java源码 不支持 - 16 join groups 不支持 - 17 物化视图 支持 - 18 物化视图日志 不支持 - 19 挖掘模型 不支持 - 20 对象表 不支持 - 21 对象类型 不支持 - 22 对象视图 不支持 - 23 operators 支持 - 24 包 支持 - 25 序列 支持 - 26 存储函数 支持 - 27 存储过程 支持 - 28 同义词 支持,有差异 Oracle数据库的数据库对象在同一namespace内不能重名。GaussDB同一namespace内同义词可与表、视图、函数、package重名,如果重名,会优先访问本名对象,未寻找到本名对象时才会寻找同义词指向的对象。 29 表 支持 - 30 视图 支持 - 31 zone map 不支持 - 表17 nonschema对象 序号 Oracle数据库 GaussDB数据库 1 上下文 不支持 2 目录 支持 3 版本 不支持 4 闪回存档 不支持 5 锁定配置文件 不支持 6 配置文件 不支持 7 还原点 支持 8 角色 支持 9 回滚段 不支持 10 表空间 支持 11 表空间集 不支持 12 统一审计策略 支持 13 用户 支持
  • 数据类型 表1 数值类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 NUMBER [ ( p [ , s ] ) ] 支持,有差异 精度和实现存在差异。 2 FLOAT [ ( p ) ] 支持 - 3 LONG 不支持 - 4 BINARY_FLOAT 不支持 - 5 BINARY_DOUBLE 支持 - 表2 日期时间类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 DATE 支持,有差异 精度有差异。 2 TIMESTAMP [ ( fractional_seconds_precision ) ] 支持 - 3 TIMESTAMP [ ( fractional_seconds_precision ) ] WITH TIME ZONE 支持,有差异 GaussDB的timestamptz等价于Oracle的timestampwithloacltimezone,缺少Oracle对应的timestamptz类型。 时区更新:部分国家或地区因为政治、经济、战争等因素经常会更新时区信息, 数据库系统也因此常常需要同步修改时区文件以确保时间内容的正确性。 GaussDB时区类型目前只涉及 timestamp with timezone, 当新的时区文件生效时,不会对已有的老数据进行变更,新数据会随时区文件信息进行同步调整。在这点上和O的同类型数据能力有差异。 4 TIMESTAMP [ ( fractional_seconds_precision ) ] WITH LOCAL TIME ZONE 不支持 - 5 INTERVAL YEAR [ ( year_precision ) ] TO MONTH 支持 - 6 INTERVAL DAY [ ( day_precision ) ] TO SECOND [ ( fractional_seconds_precision ) ] 支持 - 表3 字符类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 VARCHAR2 ( size [ BYTE | CHAR ] ) 支持,有差异 size单位为字节,最大10MB。 2 NVARCHAR2 ( size ) 支持,有差异 VARCHAR2(n)类型的别名。 3 CHAR [ ( size [ BYTE | CHAR ] ) ] 支持,有差异 size单位为字节,最大10MB。 4 NCHAR [ ( size ) ] 支持,有差异 size单位为字节,最大10MB。 5 CLOB 支持,有差异 不支持定位器概念。 6 NCLOB 不支持 - 表4 二进制类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 RAW ( size ) 支持,有差异 - 2 LONG RAW 不支持 - 3 BLOB 支持,有差异 - 4 BFILE 不支持 - 表5 ROWID类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 ROWID 不支持 - 2 UROWID 不支持 - 表6 用户自定义类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 对象类型 不支持 - 2 REF数据类型 不支持 - 3 可变数组 支持 - 4 嵌套表 支持 - 表7 伪类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 anytype 不支持 - 2 anydata 不支持 - 3 anydataset 不支持 - 表8 xml类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 XMLType 支持,有差异 不支持部分操作。 2 URIType 不支持 - 表9 空间类型 序号 Oracle数据类型 GaussDB数据库是否支持 差异 1 SDO_GEOMETRY 不支持 - 2 SDO_TOPO_GEOMETRY 不支持 - 3 SDO_GEORASTER 不支持 - 表10 锁模式 级别 Oracle锁模式 GaussDB锁模式 备注 - - NULL GaussDB的NULL表示未被赋予锁,与Oracle的0级锁对应。 0 none INVALID GaussDB的INVALID表示被赋予了非法锁。仅在运行过程中出现了GaussDB无法识别的锁时会被赋予INVALID锁。 1 null AccessShare - 2 RS RowShare - 3 RX RowExclusive - 4 S ShareUpdateExclusive - 5 SRX Share - 6 \ ShareRowExclusive - 7 X Exclusive - 8 \ AccessExclusive -
  • Prometheus实例读写地址支持公网的局点 华为云用户应使用公网Remote Read地址和Remote Write地址访问 AOM 的Prometheus监控服务,内网地址仅供华为云内部云服务调用。 公网Remote Write地址仅部分局点支持,具体请参见表1。 表1 支持公网数据上报的说明 局点名称 Region名称 公网访问地址 华东-上海一 cn-east-3 aom-access.cn-east-3.myhuaweicloud.com 华东-上海二 cn-east-2 aom-access.cn-east-2.myhuaweicloud.com 华北-北京四 cn-north-4 aom-access.cn-north-4.myhuaweicloud.com 华南-广州 cn-south-1 aom-access.cn-south-1.myhuaweicloud.com 父主题: Prometheus监控
  • 告警规则后续操作 支持对单个告警规则进行如下操作: 修改告警规则:单击告警规则所在行后的按钮,根据表1修改具体参数,支持修改规则名称,修改完成后,鼠标悬浮在规则名称上,显示修改后的规则名称和原始名称。不支持修改首次创建的原始名称。 开启告警规则:单击告警规则所在行后的按钮(关闭告警规则后,才会显示开启按钮),开启告警规则。 关闭告警规则:单击告警规则所在行后的按钮(开启告警规则后,才会显示关闭按钮),关闭告警规则。 临时关闭告警规则:单击告警规则所在行后的按钮,设置临时关闭的截止时间。 复制告警规则:单击告警规则所在行后的按钮,复制告警规则。 删除告警规则:单击告警规则所在行后的按钮,单击“确定”删除该规则。 勾选多个告警规则后,支持对多个告警进行批量操作:开启、关闭、临时关闭、取消临时关闭、告警恢复开启、告警恢复关闭、删除、导出。
  • Alpaca数据 本教程使用到的训练数据集是Alpaca数据集。Alpaca是由OpenAI的text-davinci-003引擎生成的包含52k条指令和演示的数据集。这些指令数据可以用来对语言模型进行指令调优,使语言模型更好地遵循指令。 训练数据集下载:https://huggingface.co/datasets/tatsu-lab/alpaca/resolve/main/data/train-00000-of-00001-a09b74b3ef9c3b56.parquet,数据大小:24M左右。 SFT全参微调、LoRA微调训练数据集下载: https://huggingface.co/datasets/silk-road/alpaca-data-gpt4-chinese/blob/main/Alpaca_data_gpt4_zh.jsonl,数据大小:42M左右。
  • 自定义数据 用户也可以自行准备训练数据。数据要求如下: 使用标准的.json格式的数据,通过设置--json-key来指定需要参与训练的列。 请注意huggingface中的数据集具有如下this格式。可以使用–json-key标志更改数据集文本字段的名称,默认为text。在维基百科数据集中,它有四列,分别是id、url、title和text。可以指定–json-key标志来选择用于训练的列。 { 'id': '1', 'url': 'https://simple.wikipedia.org/wiki/April', 'title': 'April', 'text': 'April is the fourth month...' } 经下载的原始数据存放在/home/ma-user/ws/training_data目录下。具体步骤如下: 进入到/home/ma-user/ws/目录下。 创建目录“training_data/pretrain”,并将预训练原始数据放置在此处。 mkdir -p training_data/pretrain 创建目录“training_data/finetune”,并将微调训练原始数据放置在此处 mkdir -p training_data/finetune 数据存放参考目录结构如下: ${workdir}(例如/home/ma-user/ws ) ├── training_data #原始数据目录 ├── pretrain #预训练加载的数据 ├── train-00000-of-00001-a09b74b3ef9c3b56.parquet #预训练原始数据文件 ├── finetune #微调训练加载的数据 ├── Alpaca_data_gpt4_zh.jsonl #微调训练原始数据文件
  • 限定条件下载 开发过程中,您有任何问题可以在github上提交issue,或者在华为云 对象存储服务 论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 下载对象时,可以指定一个或多个限定条件,满足限定条件时则进行下载,否则抛出异常,下载对象失败。 您可以使用的限定条件如下: 参数 作用 OBS .NET SDK对应属性 If-Modified-Since 如果对象在指定的时间后有修改,则返回对象内容,否则返回错误。 GetObjectRequest.IfModifiedSince If-Unmodified-Since 如果对象在指定的时间后没有修改,则返回对象内容,否则返回错误。 GetObjectRequest.IfUnmodifiedSince If-Match 如果对象的ETag值与该参数值相同,则返回对象内容,否则抛出异常。 GetObjectRequest.IfMatch If-None-Match 如果对象的ETag值与该参数值不相同,则返回对象内容,否则抛出异常。 GetObjectRequest.IfNoneMatch 对象的ETag值是指对象数据的MD5校验值。 如果包含IfUnmodifiedSince并且不符合或者包含IfMatch并且不符合,抛出异常中HTTP状态码为:412 precondition failed。 如果包含IfModifiedSince并且不符合或者包含IfNoneMatch并且不符合,抛出异常中HTTP状态码为:304 Not Modified。 以下代码展示了如何进行限定条件下载: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 限定条件下载对象 try { DateTime datetime = new DateTime(2018, 3, 10, 12, 00, 00); GetObjectRequest request = new GetObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", IfModifiedSince = datetime, }; using (GetObjectResponse response = client.GetObject(request)) { string dest = "savepath"; if (!File.Exists(dest)) { response.WriteResponseStreamToFile(dest); } Console.WriteLine("Get object response: {0}", response.StatusCode); } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 父主题: 下载对象
  • 获取桶访问权限 您可以通过ObsClient.GetBucketAcl获取桶的访问权限。以下代码展示如何获取桶访问权限: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); //获取桶ACL try { GetBucketAclRequest request = new GetBucketAclRequest { BucketName = "bucketname", }; GetBucketAclResponse response = client.GetBucketAcl(request); Console.WriteLine("Get bucket acl response: {0}", response.StatusCode); foreach(Grant grant in response.AccessControlList.Grants) { if(grant.Grantee is CanonicalGrantee) { Console.WriteLine("Grantee id: {0}", (grant.Grantee as CanonicalGrantee).Id); }else if(grant.Grantee is GroupGrantee) { Console.WriteLine("Grantee type: {0}", (grant.Grantee as GroupGrantee).GroupGranteeType); } Console.WriteLine("Grant permission: {0}", grant.Permission); } } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 创桶时指定预定义访问策略 以下代码展示如何在创建桶时指定预定义访问策略: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 创建桶 try { CreateBucketRequest request = new CreateBucketRequest { BucketName = "bucketname", // 设置桶访问权限为公共读写 CannedAcl = CannedAclEnum.PublicReadWrite, }; CreateBucketResponse response = client.CreateBucket(request); Console.WriteLine("StatusCode: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 为桶设置预定义访问策略 以下代码展示如何为桶设置预定义访问策略: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); //设置桶ACL try { SetBucketAclRequest request = new SetBucketAclRequest { BucketName = "bucketname", // 设置桶访问权限为私有读写 CannedAcl = CannedAclEnum.Private }; SetBucketAclResponse response = client.SetBucketAcl(request); Console.WriteLine("Set bucket acl response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 异步调用方式 异步调用使用回调函数返回调用结果,以下代码展示了使用OBS客户端进行异步调用的通用方式: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 异步调用接口,例如创建桶 CreateBucketRequest request = new CreateBucketRequest { BucketName = "bucketname", }; client.BeginCreateBucket(request, delegate(IAsyncResult ar){ try { CreateBucketResponse response = client.EndCreateBucket(ar); Console.WriteLine("Create bucket response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } }, null); Console.ReadKey();
  • 分析方法 分析定位问题或查看运行状态时,可根据日期查找到相应的日志文件,再通过日志文件的日志记录进行分析。 分析的具体步骤如下: 查找日志信息。 根据错误发生时间及操作的相关信息,日志文件目录下查找相关的接口日志,日志示例如下。 2018-05-23 21:55:02,103 [9] INFO - ListObjectsRequest begin. 2018-05-23 21:55:02,526 [9] INFO - Send http request end, cost 385 ms 2018-05-23 21:55:02,536 [9] ERROR - Rethrowing as a ObsException error in PerformRequest Request error, StatusCode:404, ErrorCode:NoSuchBucket, ErrorMessage:The specified bucket does not exist, RequestId:0403000001638D4819383F2D4A2B2C50, HostId:N8OMsHew7O/LMHua8qpm49geWphVJI6l2mnnzUIYwQwHAuzJw/kmV+O4iIcf0GRR 2018-05-23 21:55:02,548 [9] ERROR - ListObjectsRequest exception code: NoSuchBucket, with message: Request error 2018-05-23 21:55:02,553 [9] INFO - ListObjectsRequest end, cost 449 ms 根据错误日志信息分析错误原因。 例如,从日志文件中获取到错误码"NoSuchBucket",通过查看对照OBS服务端错误码,得知实际的错误信息为“指定bucket不存在”。
  • 修订记录 发布日期 修订记录 2024-02-02 第十次正式发布。 新增章节: 如何解决进程偶现卡死的问题? 2023-12-25 第九次正式发布。 刷新章节: 使用临时URL进行授权访问,新增代码示例“初始化分段上传任务”。 2020-02-18 第八次正式发布。 修改章节: 开启桶日志,优化描述内容。 2019-11-20 第七次正式发布。 调整以下章节的位置: 示例程序 技术支持渠道 2019-08-21 第六次正式发布。 修改章节: SDK下载,更新历史版本地址和修订记录地址。 2019-03-30 第五次正式发布。 增加章节: API参考。 2019-03-05 第四次正式发布。 修改章节: “事件通知”各子章节,新增 函数工作流 服务功能的说明及代码样例。 对象上传简介,新增对象链接地址格式拼接规则。 使用临时URL进行授权访问,优化描述内容。 2018-08-31 第三次正式发布。 新增章节: 获取上传进度 获取下载进度 2018-06-11 第二次正式发布。 完成接口重构。 2018-03-31 第一次正式发布。
  • 删除单个对象 您可以通过ObsClient.DeleteObject删除单个对象。以下代码展示如何删除单个对象: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 删除对象 try { DeleteObjectRequest request = new DeleteObjectRequest() { BucketName = "bucketname", ObjectKey = "objectname", }; DeleteObjectResponse response = client.DeleteObject(request); Console.WriteLine("Delete object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 批量删除对象 您可以通过ObsClient.DeleteObjects批量删除对象。 每次最多删除1000个对象,并支持两种响应模式:详细(verbose)模式和简单(quiet)模式。 详细模式:返回的删除成功和删除失败的所有结果,默认模式。 简单模式:只返回的删除过程中出错的结果。 以下代码展示了如何进行批量删除对象: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 批量删除对象 try { DeleteObjectsRequest request = new DeleteObjectsRequest(); request.BucketName = "bucketname"; request.Quiet = true; request.AddKey("objectname1"); request.AddKey("objectname2"); DeleteObjectsResponse response = client.DeleteObjects(request); Console.WriteLine("Delete objects response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 初始化OBS客户端 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 向OBS发送任一HTTP/HTTPS请求之前,必须先创建一个ObsClient实例: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 使用访问OBS 更多关于OBS客户端初始化的操作请参考“初始化”章节。 日志配置详见配置SDK日志。 父主题: 快速入门
  • 创建OBS客户端 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 OBS客户端(ObsClient)是访问OBS服务的.NET客户端,它为调用者提供一系列与OBS服务进行交互的接口,用于管理、操作桶(Bucket)和对象(Object)等OBS服务上的资源。使用OBS .NET SDK向OBS发起请求,您需要初始化一个ObsClient实例,并根据需要修改ObsConfig的默认配置项。 直接使用服务地址创建OBS客户端(ObsClient),所有配置均为默认值,且后续不支持修改。 永久访问密钥(accessKey/secretKey)创建OBS客户端的代码如下 // 初始化配置参数 // 认证用的accessKey和secretKey硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, "https://your-endpoint"); // 使用访问OBS 临时访问密钥(accessKey/secretKey/securityToken)创建OBS客户端的代码如下 // 初始化配置参数 // 认证用的accessKey和secretKey硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); string securityToken= "your_securityToken" // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey,securityToken, "https://your-endpoint"); // 使用访问OBS 使用配置类(ObsConfig)创建OBS客户端(ObsClient),可自定义配置各参数,后续不支持修改,具体参数配置可参见配置OBS客户端。 // 创建ObsConfig配置类实例 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的accessKey和secretKey硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 使用访问OBS 您的工程中可以有多个ObsClient,也可以只有一个ObsClient。 ObsClient是线程安全的,可在并发场景下使用。 父主题: 初始化
  • 对象上传简介 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 在OBS中,用户操作的基本数据单元是对象。OBS .NET SDK提供了丰富的对象上传接口,可以通过以下方式上传对象: 流式上传 文件上传 异步上传 分段上传 追加上传 断点续传上传 SDK支持上传0KB~5GB的对象。流式上传、文件上传和追加上传的内容大小不能超过5GB;当上传较大文件时,请使用分段上传;分段上传每段内容大小不能超过5GB。 如果上传的对象权限设置为匿名用户读取权限,对象上传成功后,匿名用户可通过链接地址访问该对象数据。对象链接地址格式为:https://桶名. 域名 /文件夹目录层级/对象名。如果该对象存在于桶的根目录下,则链接地址将不需要有文件夹目录层级。 父主题: 上传对象
  • 追加上传 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 追加上传可实现对同一个对象追加数据内容的功能。您可以通过ObsClient.AppendObject进行追加上传。示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { // 第一次追加上传 AppendObjectRequest request = new AppendObjectRequest(); request.BucketName = "bucketname"; request.ObjectKey = "objectkey"; request.InputStream = new MemoryStream(Encoding.UTF8.GetBytes("Hello OBS")); AppendObjectResponse response = client.AppendObject(request); // 第二次追加上传 request.Position = response.NextPosition; request.InputStream = new MemoryStream(Encoding.UTF8.GetBytes("Hello OBS Again")); response = client.AppendObject(request); Console.WriteLine("NextPosition:{0}", response.NextPosition); Console.WriteLine("ETag:{0}", response.ETag); // 通过获取对象属性接口获取下次追加上传的位置 GetObjectMetadataResponse metadataResponse = client.GetObjectMetadata("bucketname", "objectkey"); Console.WriteLine("NextPosition from metadata:{0}", metadataResponse.NextPosition); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } ObsClient.PutObject上传的对象可覆盖ObsClient.AppendObject上传的对象,覆盖后对象变为普通对象,不可再进行追加上传。 第一次调用追加上传时,如果已存在同名的普通对象,则会抛出异常(HTTP状态码为409)。 每次追加上传返回的ETag是当次追加数据内容的ETag,不是完整对象的ETag。 单次追加上传的内容不能超过5GB,且最多支持10000次追加上传。 追加上传成功后,可通过AppendObjectResponse.NextPosition获取下次追加上传的位置;或者通过ObsClient.GetObjectMetadata接口获取下次追加上传的位置。 父主题: 上传对象
  • 设置桶策略 您可以通过ObsClient.SetBucketPolicy设置桶策略。示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { SetBucketPolicyRequest request = new SetBucketPolicyRequest { BucketName = "bucketname", Policy = "your policy", }; SetBucketPolicyResponse response = client.SetBucketPolicy(request); Console.WriteLine("Set bucket policy response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); } 桶策略内容的具体格式(JSON格式字符串)请参考《对象存储服务API参考》。
  • 获取桶策略 您可以通过ObsClient.GetBucketPolicy获取桶策略。示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { GetBucketPolicyRequest request = new GetBucketPolicyRequest { BucketName = "bucketname", }; GetBucketPolicyResponse response = client.GetBucketPolicy(request); Console.WriteLine("Get bucket policy response: {0}", response.StatusCode); Console.WriteLine("Policy: {0}", response.Policy); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 删除桶策略 您可以通过ObsClient.DeleteBucketPolicy删除桶策略。示例代码如下: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { DeleteBucketPolicyRequest request = new DeleteBucketPolicyRequest { BucketName = "bucketname", }; DeleteBucketPolicyResponse response = client.DeleteBucketPolicy(request); Console.WriteLine("Delete bucket policy response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 重写对象属性 以下代码展示了如何在复制对象时重写对象属性: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 重写对象属性 try { CopyObjectRequest request = new CopyObjectRequest(); request.SourceBucketName = "sourcebucketname"; request.SourceObjectKey = "sourceobjectname"; request.BucketName = "destbucketname"; request.ObjectKey = "destobjectName"; request.StorageClass = StorageClassEnum.Warm; request.ContentType = "image/jpeg"; request.MetadataDirective = MetadataDirectiveEnum.Replace; CopyObjectResponse response = client.CopyObject(request); Console.WriteLine("Copy object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 重写对象访问权限 以下代码展示了如何在复制对象时重写对象访问权限: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 重写对象访问权限 try { CopyObjectRequest request = new CopyObjectRequest(); request.SourceBucketName = "sourcebucketname"; request.SourceObjectKey = "sourceobjectname"; request.BucketName = "destbucketname"; request.ObjectKey = "destobjectName"; request.CannedAcl = CannedAclEnum.PublicRead; CopyObjectResponse response = client.CopyObject(request); Console.WriteLine("Copy object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 简单复制 以下代码展示了如何进行简单复制: // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); // 复制对象 try { CopyObjectRequest request = new CopyObjectRequest(); request.SourceBucketName = "sourcebucketname"; request.SourceObjectKey = "sourceobjectname"; request.BucketName = "destbucketname"; request.ObjectKey = "destobjectName"; CopyObjectResponse response = client.CopyObject(request); Console.WriteLine("Copy object response: {0}", response.StatusCode); } catch (ObsException ex) { Console.WriteLine("ErrorCode: {0}", ex.ErrorCode); Console.WriteLine("ErrorMessage: {0}", ex.ErrorMessage); }
  • 限定条件复制 复制对象时,可以指定一个或多个限定条件,满足限定条件时则进行复制,否则抛出异常,复制对象失败。 您可以使用的限定条件如下: 参数 作用 OBS .NET SDK对应属性 Copy-Source-If-Modified-Since 如果源对象在指定的时间后有修改,则进行复制,否则抛出异常。 CopyObjectRequest.IfModifiedSince Copy-Source-If-Unmodified-Since 如果源对象在指定的时间后没有修改,则进行复制,否则抛出异常。。 CopyObjectRequest.IfUnmodifiedSince Copy-Source-If-Match 如果源对象的ETag值与该参数值相同,则进行复制,否则抛出异常。 CopyObjectRequest.IfMatch Copy-Source-If-None-Match 如果源对象的ETag值与该参数值不相同,则进行复制,否则抛出异常。 CopyObjectRequest.IfNoneMatch
  • 使用前需知 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 请确认您已经熟悉OBS的基本概念,如桶(Bucket)、对象(Object)、访问密钥(AK和SK)等。 您可以先参考OBS客户端通用示例,了解OBS .NET SDK接口调用的通用方式。 使用OBS客户端进行接口调用操作完成后,没有异常抛出,则表明返回值有效;如果抛出异常,则说明操作失败,此时应从SDK自定义异常实例中获取错误信息。 使用OBS客户端进行接口调用成功后,均会返回包含响应头信息的SDK公共响应头实例。 父主题: 快速入门
  • 如何解决进程偶现卡死的问题? 在调用.NET SDK方法时,如果遇到该问题,可以将方法调用加上using方式,示例如下。 // 初始化配置参数 ObsConfig config = new ObsConfig(); config.Endpoint = "https://your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。 // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html string accessKey= Environment.GetEnvironmentVariable("AccessKeyID", EnvironmentVariableTarget.Machine); string secretKey= Environment.GetEnvironmentVariable("SecretAccessKey", EnvironmentVariableTarget.Machine); // 创建ObsClient实例 ObsClient client = new ObsClient(accessKey, secretKey, config); try { GetObjectMetadataRequest request = new GetObjectMetadataRequest(); // 指定存储桶名称 request.BucketName = "bucketname"; // 指定对象,此处以 example/objectname 为例 request.ObjectKey = "example/objectname"; // 获取对象元数据 using (GetObjectMetadataResponse response = client.GetObjectMetadata(request)) { Console.WriteLine("Get object metadata response: {0}", response.StatusCode); // 获取对象的ETag值 Console.WriteLine("Object etag {0}: ", response.ETag); // 获取对象的版本号 Console.WriteLine("Object versionId {0}: ", response.VersionId); // 获取对象数据的长度,单位是字节 Console.WriteLine("Object contentLength {0}: ", response.ContentLength); } } catch (ObsException ex) { Console.WriteLine("Message: {0}", ex.Message); } 父主题: 常见问题
  • 为什么提示“备案授权码无效” 以下情况会导致备案授权码无效: 备案授权码已经被使用。 处理方法:请更换使用其他备案授权码。 一个备案授权码只能使用一次,不能重复使用。 使用备案授权码提交备案申请,管局审核通过后,备案授权码无效。 使用备案授权码备案的网站,网站不再使用并注销后,备案授权码无效,不能继续使用。 用于生成备案授权码的资源过期。 处理方法1:请重新购买包周期的E CS ,并生成新的备案授权码使用。 处理方法2:更换备案授权码绑定的ECS资源,继续使用原备案授权码。 单击“操作”列下的“更改云服务”。 图1 更改云服务 选择其他可用的ECS。 如果没有可用资源,请重新购买包周期的ECS。 图2 更换ECS资源 父主题: 系统填写
共100000条