我正在使用Azure表存储的系统.在其他系统中(例如,SQL,基于文件等),我可以写一个假的,允许我测试我的数据持久性逻辑.但是,我看不到为Azure表服务创建虚假的简单方法.
我可以创建一个行为方式相同的新IIS项目,但这不是编写单元测试的好方法,它更像是一个集成测试.
有关如何对使用Azure Table Storage客户端的数据访问代码进行单元测试的任何想法?
我们正在尝试创建一个Web服务,使用node.js服务将文件上载到Azure文件存储.
下面是node.js服务器代码.
exports.post = function(request, response){
var shareName = request.headers.sharename;
var dirPath = request.headers.directorypath;
var fileName = request.headers.filename;
var body;
var length;
request.on("data", function(chunk){
body += chunk;
console.log("Get data");
});
request.on("end", function(){
try{
console.log("end");
var data = body;
length = data.length;
console.log(body); // This giving the result as undefined
console.log(length);
fileService.createFileFromStream(shareName, dirPath, fileName, body, length, function(error, result, resp) {
if (!error) {
// file uploaded
response.send(statusCodes.OK, "File Uploaded");
}else{
response.send(statusCodes.OK, "Error!");
}
});
}catch (er) {
response.statusCode = 400;
return …Run Code Online (Sandbox Code Playgroud) azure azure-storage node.js azure-mobile-services azure-storage-files
我目前正在开发Azure表存储的应用程序.在该应用程序中,我有一个表,它将具有相对较少的插入(几千/天),并且这些实体的主键将在另一个表中使用,该表将具有数十亿行.
因此,我正在寻找一种方法来使用自动递增的整数而不是GUID作为小表中的主键(因为它将节省大量存储和插入的可伸缩性并不是真正的问题).
关于这个主题已经有过一些讨论,例如http://social.msdn.microsoft.com/Forums/en/windowsazure/thread/6b7d1ece-301b-44f1-85ab-eeb274349797.
但是,由于并发问题可能很难调试和发现,我对自己实现这一点感到有点不舒服.因此,我的问题是,是否有一个经过充分测试的阻止?
concurrency primary-key auto-increment identity-column azure-storage
获取Azure存储容器中Blob数量的最有效方法是什么?
现在除了下面的代码,我想不出任何其他方式:
CloudBlobContainer container = GetContainer("mycontainer");
var count = container.ListBlobs().Count();
Run Code Online (Sandbox Code Playgroud) 我使用Microsoft Azure .NET客户端库与Azure云存储进行交互.我需要能够访问其元数据集合中每个blob的其他信息.我目前正在使用CloudBlobDirectory.ListBlobs()方法获取我在blob名称中设计的目录结构的特定目录中的blob列表.ListBlobs()方法返回IListBlobItem对象的列表.它们只有几个属性:Url以及对父目录和父容器的引用.我需要获取实际blob对象的元数据.
我设想有一种方法可以将IListBlobItem强制转换为BlockBlob对象,或者使用IListBlockItem来获取对BlockBlob的引用,但似乎无法找到一种方法.
我的问题是:有没有办法从这个方法获取BlockBlob对象,还是我必须使用不同的方式获取实际的BlockBlob对象?如果不同,那么你可以建议一种方法来实现这一点,同时还能够通过"目录"方案进行过滤吗?
有人可以建议在最快的时间内上传/下载多GB大小的视频blob到Azure存储的最佳方法吗?
我是Windows Azure开发的新手,并且需要在Windows Azure存储表中存储一些数据.
该表实际上仅用于为位于azure存储驱动器上的某些文件提供快速查找机制.
因此,我计划在应用程序启动时填充此表(即在Web应用程序全局应用程序启动时)
而不是尝试维护此表以更改应用程序未运行时驱动器可能发生的更改.或者因为这个驱动器只是一个资源的vhd,我们可能偶尔上传一个新的vhd.
因此,而不是试图维持这一点的麻烦.在每次应用程序启动时重建此表就足够了.
我开始组合一些代码来检查表是否已经存在,如果它确实删除它,然后重新创建一个新表.
var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureStorage"].ConnectionString);
var tableClient = storageAccount.CreateCloudTableClient();
var rmsTable = tableClient.GetTableReference("ResourceManagerStorage");
rmsTable.DeleteIfExists();
rmsTable.Create();
Run Code Online (Sandbox Code Playgroud)
我曾预料到这不起作用.我收到以下错误:
The remote server returned an error: (409) Conflict.
HTTP/1.1 409 Conflict
Cache-Control: no-cache
Transfer-Encoding: chunked
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: c6baf92e-de47-4a6d-82b3-4faec637a98c
x-ms-version: 2012-02-12
Date: Tue, 19 Mar 2013 17:26:25 GMT
166
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code>TableBeingDeleted</code>
<message xml:lang="en-US">The specified table is being deleted. Try operation later.
RequestId:c6baf92e-de47-4a6d-82b3-4faec637a98c
Time:2013-03-19T17:26:26.2612698Z</message>
</error>
0
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?是否有一个事件可以订阅,以便在表被删除时通知您?有关实施此方法的最佳方法的其他建议吗?
我最近尝试将网站部署到使用Azure存储的Windows Azure网站服务.部署后,我收到来自Storage SDK的以下错误,该错误似乎引用了尚不存在的程序集版本.我无法在任何地方找到此版本的DLL文件.有什么建议?
无法加载文件或程序集'Microsoft.Data.Services.Client,Version = 5.6.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.该系统找不到指定的文件.
我正在尝试发布一个800mb +的软件包.但是Windows Azure发布只允许最多600mb,所以我可能需要先将一些非结构化文件上传到Windows Azure存储.
将文件上传到Windows Azure存储的最佳方法是什么?
我有以下代码使用WindowsAzure.Storagenuget 包返回容器列表:
public static class AzureBlobStorageClient
{
public static CloudBlobClient GetClient(string AccountName = "foo", string AccountKey = "bar" )
{
try
{
var connectionString = $"DefaultEndpointsProtocol=https;AccountName={AccountName};AccountKey={AccountKey};EndpointSuffix=core.windows.net";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
IRetryPolicy exponentialRetryPolicy = new ExponentialRetry(TimeSpan.FromSeconds(2), 10);
blobClient.DefaultRequestOptions.RetryPolicy = exponentialRetryPolicy;
return blobClient;
}
catch (StorageException ex)
{
Console.WriteLine("Error returned from the service: {0}", ex.Message);
throw;
}
}
public static void DeleteContainer(CloudBlobContainer container)
{
var result = container.DeleteIfExistsAsync().Result;
}
public static List<CloudBlobContainer> GetContainers()
{
var client …Run Code Online (Sandbox Code Playgroud) azure-storage ×10
azure ×8
c# ×2
.net ×1
concurrency ×1
download ×1
node.js ×1
primary-key ×1
unit-testing ×1
upload ×1