Tag: azure

如何在azure上以编程方式托管wcf服务

我想在Azure上托管一个wcf服务,但是这个实例化必须是动态的,所以我想根据需要实例化新服务,但是…… new ServiceHost(new Service(),<>) 什么应该是基础Uri(方案,服务器名称和端口): 工人角色 一个网络角色 外部端点 内部终点。 (出于性能原因,有些服务需要在负载均衡器后面互相交谈,但是如何?) 这些也是可能的: 每个Web角色有多个服务主机。 不同的端点绑定即。 我想在Http上使用一个servicehost,另一个Net.tcp如果需要,我需要在部署时在csdef文件中声明这两个协议,还是可以按需编程添加它们(又名。后期绑定)? 我正在寻找一个解决方案,因为$$$原因不涉及ServiceBus。

使用AAD对Azure API App进行身份validation时出现401错误

我有一个API应用程序,与网关主机一起工作正常,现在网关主机已被弃用我正在尝试遵循迁移指南 。 我使用2.8.1 SDK重新部署了我的服务,可以使用AAD或Microsoft帐户使用浏览器登录服务,并使用Swagger测试服务。 但是,我正在尝试让客户端使用ClientId和Secret访问该服务。 代码能够从AAD获取访问令牌,但每当我尝试访问其中一个服务资源时,我总是会收到401错误。 当我调试服务时,我在日志中看到以下内容: Microsoft.Azure.AppService.Authentication Verbose: 0 : Received request: GET https://[myService].azurewebsites.net/api/[myResource] Microsoft.Azure.AppService.Authentication Warning: 0 : JWT validation failed: IDX10214: Audience validation failed. Audiences: ‘https://[myService].azurewebsites.net/’. Did not match: validationParameters.ValidAudience: ‘[AAD ClientId]’ or validationParameters.ValidAudiences: ‘http://[myService].azurewebsites.net’. Microsoft.Azure.AppService.Authentication Information: 0 : Sending response: 401.71 Unauthorized The thread 0x3b00 has exited with code 0 (0x0). 似乎问题是提供请求的受众是https,但validParameters.ValidAudiences集合仅包含http。 […]

DocumentDB TransientFaultHandling最佳实践

我一直在为受限制的DocumentDB客户端调用编写非常详细的重试逻辑。 以下示例是10次重试尝试的常见示例。 我的问题有两个方面:这是最好的做法,是否有一种不那么冗长的方式来处理这个问题? 我看到有一个Microsoft.Azure.Documents.Client.TransientFaultHandling nuget包应该用更少的代码实现相同的结果,但我在StackOverflow或Google上找不到任何示例,似乎没有任何明确的文档可用来自微软。 int maxRetryAttempts = 10; while (maxRetryAttempts > 0) { try { // Attempt to call DocumentDB Method // —[DocumentDB Method Here]— } catch (DocumentClientException de) { if (de.StatusCode.HasValue) { var statusCode = (int)de.StatusCode; if (statusCode == 429 || statusCode == 503) { //Sleep for retry amount Thread.Sleep(de.RetryAfter); //Decrement max retry […]

SQL Azure自动地理复制是否会自动进行故障转移?

我们在SQL Azure(Premium)中有一个地理复制数据库,并且想知道我们是否指向作为主数据的中南美洲数据库,如果发生故障,我们必须手动更改代码中的连接字符串(C#。 Net / Entity Framework 6)指向北美的新数据库? 我们正在寻找一种方法来拥有一个连接字符串,然后Azure执行覆盖,现在指向新数据库,如果主服务器出现故障。 那可能吗? 关于方法的更新: 所以我读到这一点,当一个区域关闭并将主数据库更改为另一个正在运行的复制数据库时,我们必须手动进入生产系统上的web.config文件。 我决定只在Web配置中对东,西,南区域进行硬编码,然后编写代码重试并在无法到达主要区域的情况下故障转移到其他区域。 这意味着它只能读取,不能写入Microsoft,或者我们手动将主站故障转移到只读活动从站。 对我来说不是最好的体验。 需要人工干预知道它已经关闭,然后翻转它和自定义代码

以编程方式创建blob存储容器

我有一个要求,在创建公司时,我的storageaccount中创建了一个关联的blob存储容器,容器名称设置为传入的字符串变量。我尝试了以下操作: public void AddCompanyStorage(string subDomain) { //get the storage account. CloudStorageAccount storageAccount = CloudStorageAccount.Parse( System.Configuration.ConfigurationManager.AppSettings[“StorageConnectionString”].ToString()); //blob client now CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); //the container for this is companystyles CloudBlobContainer container = new CloudBlobContainer(“https://mystore.blob.core.windows.net/” + subDomain); } 然而,这并没有像我预期的那样创建容器,我是否以错误的方式进行此操作? 这可能吗? 干杯

活动Azure Sql连接超出了连接池限制

我们的Azure SQL数据库性能会在很长一段时间内显着降低,我们会在生产中解决问题。 我们知道我们在其中一个表上有锁,但是这些锁不是死锁,它们是长锁,并且在一个小时左右的时间内性能恢复正常。 我们正试图找到关于如何获得这些长锁的所有可能场景(每个查询都超快,所有性能分析器都可以向我们展示导致长锁的原因)。 这个问题的原因如下图所示: Out连接池设置仅允许汇集200个连接。 大多数时候,我们与数据库有大约10-20个开放/池化连接。 然后突然有许多活动连接开始增长,并且池完全被占用。 虽然许多池化连接保持在200以下,但我们看到使用sp_who2的多个活动连接达到1.5k-2k连接(有时为4k-5k)。 我使用Azure门户监控工具构建了相同的图表。 它有不同的聚合期,但显示相同的问题: 我们使用的连接字符串: Data Source = [server] .database.windows.net; initial catalog = [database]; persist security info = True; user id = [user]; password = [password]; MultipleActiveResultSets = True; Connection Timeout = 30; Max Pool大小= 200;池=真;应用= [AppName的] 考虑到200个连接的连接池限制,这怎么可能? ps:没有周期性任务,长时间运行的查询或其他任何工具,我们检查sp_who2与sp_who2所有活动连接。

Azure Service Bus序列化类型

我们已经开始调查使用Windows Azure Service Bus作为我们当前队列的替代品,因为我们正朝着面向服务的架构迈进。 大多数文件都很清楚; 但是我很难确定BrokeredMessage在提供主体时使用哪种类型的序列化。 例如,假设我实例化一个BrokeredMessage对象,如下所示: ICommand sendMessageCommand = new SendMessageCommand { Title = “A new message title”, Body = “A new message body” }; BrokeredMessage brokeredMessage = new BrokeredMessage(sendMessageCommand); queueClient.Send(brokeredMessage); SendMessageCommand是一个标有[Serializable]属性的简单DTO; 在我们的旧队列中,这是二进制序列化的,因此它可以更快地存储并保留其元数据。 这对我们很重要,因为我们使用队列使用此处概述的模式发送命令,接收工作者角色使用generics和动态类型的混合反序列化命令。 但是根据这篇文章,传递给BrokeredMessage的构造函数的主体是“Binary XML Serialized”。 我的假设是,这是标准的XML序列化,然后通过二进制格式化器,是正确的吗? 除此之外; 这是否意味着如果我要使用默认的BrokeredMessage消息体function; 我必须确保所有对象都是XML Serializable,包括所有出现的问题? (私有字段丢失,没有使用generics反序列化的元数据,xml序列化属性) 最后; 如果是这样的话; 有一个简单的方法吗? 我正在考虑做我们自己的二进制序列化,然后将byte[]存储在BrokeredMessage的属性中。

连续连接数据库时出错

当我在连续循环中从数据库查询时,一段时间后我收到一个错误: 提出的exception可能是由于瞬时故障引起的。 如果要连接到SQL Azure数据库,请考虑使用SqlAzureExecutionStrategy。 通常它工作正常。

服务结构unit testing和dependency injection

我无法通过调用它的构造函数来测试可靠的服务/ Actor,然后测试它的方法。 var testService = new SomeService(); 抛出NullReferenceException。 那么我可以用部署的服务做什么.. 据我所知,部署的SF Reliable Services / Actors不是标准的.NET类,部署S / A的unit testing可能是一个奇怪的想法。 无论如何,现在我想尝试一下。 例如。 我刚刚部署了一个服务,而不是在测试中我创建了一个Proxy对象并将项添加到Service的输入队列中。 然后我需要声明输入队列计数= 1.如果我刚刚部署了一个服务而没有其他客户端/服务/演员使用它的输入队列,它就可以工作。 但是下次这次测试失败就是问题所在。 我需要让服务停止与其他消费者一起操作,丢弃它的队列而不是测试它。 为此,我可以创建一些TestMode属性和一些方法,如PropareoForTests / TestingCompleted,并在测试之前和之后从测试客户端调用它们。 这样做是不是一个坏主意。 也许有一些unit testingSF的指导方针? 谢谢。 更新: 在研究Service Fabric Web Reference Application示例时,我发现了这个TODO字符串: /// TODO: Temporary property-injection for an IServiceProxyWrapper until constructor injection is available. 这是否意味着SF服务将改善其DI支持? 演员怎么样?

Azure October 2012 SDK破坏了UseDevelopmentStorage = true

有没有人尝试过使用usedevelopmentstorage = true连接字符串的2012年10月的Azure sdk? CloudStorageAccount.Parse(“UseDevelopmentStorage=true”) 抛出’给定的密钥在字典中不存在’例外。 CloudStorageAccount.DevelopmentStorageAccount 工作正常。 这是azure色的sdk中的一个错误吗?