Tag: azure

entity framework批量插入虚幻慢

我正在使用EF 6.我试图插入大约200.000个实体,同时在每100个实体后保存对数据库的更改。 问题是需要11个小时来保存50.000个实体,它仍然落后。 我正在使用WebJobs运行它,并且作业在与主网站相同的azure webapp上发布。 问题是因为和WebJob没有足够的资源,或者在100个实体之后保存,还是方法? 方法 public void SaveLeadsForBuyer(ISenderModel model) { var rowCounter = 0; foreach (var deliveryRecord in model.Customers.Select(customerModel => new DeliveryRecord() { BuyerId = model.Buyer.Id, AspNetUserId = customerModel.Id, DeliveryType = model.Buyer.DeliveryType, CreatedOn = DateTime.UtcNow })) { ++rowCounter; _unit.Repository().Insert(deliveryRecord); _unit.SaveChangesPartially(rowCounter, 100); } _unit.SaveChanges(); } 帮手 public static class UnitOfWorkHelper { /// /// Helper […]

ADAL – AcquireTokenSilentAsync失败(Azure Active Directory身份validation库)

我编写了一个新的应用程序来通过其余的API访问办公室数据,因此我想使用新的身份validation模型(V2.0端点) v2.0 endpoit有什么不同 我可以通过电话获得令牌 private static string[] scopes = { “https://outlook.office.com/mail.read”, “https://outlook.office.com/calendars.read” }; public async Task SignIn() { … SNIP Uri authUri = await authContext.GetAuthorizationRequestUrlAsync(scopes, null, clientId, redirectUri, new UserIdentifier(“contoso@foo”, UserIdentifierType.RequiredDisplayableId), null); return Redirect(authUri.ToString()); } authContext.AcquireTokenByAuthorizationCodeAsync(authCode, redirectUri, credential, scopes) 问题是第二次调用 public async Task SignIn() { … SNIP var authResult = authContext.AcquireTokenSilentAsync(scopes, clientId, new UserIdentifier(“contoso@foo.ch”, UserIdentifierType.RequiredDisplayableId)) […]

具有计时器触发和Blob触发的连续Web作业

我在使用azure jobs sdk及其扩展的同一Web作业控制台应用程序中具有以下function。 定时触发器查询文件的API端点,对其执行一些额外的工作,然后将文件保存到名为blahinput的blob中。 现在第二个方法“ProcessBlobMessage”应该在blahinput中识别新的blob文件,并用它做一些事情。 public static void ProcessBlobMessage([BlobTrigger(“blahinput/{name}”)] TextReader input, string name, [Blob(“foooutput/{name}”)] out string output) {//do something } public static void QueryAnAPIEndPointToGetFile([TimerTrigger(“* */1 * * * *”)] TimerInfo timerInfo) { // download a file and save it to blob named blah input} 这里的问题是:当我将上述Web作业部署为连续时,只有定时器触发的事件似乎被触发,而应该识别新文件的函数永远不会被触发。 在同一个Web作业中是否不可能有两个这样的触发器?

服务结构服务远程处理

在过去的几周里,我一直在从云服务迁移到Service Fabric,并且使用两种服务之间的Remoting遇到了一些绊脚石。 我一直在使用Service Remoting上的官方文档和示例代码,特别是我试图让这里概述的示例工作: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-communication-remoting 我有2项服务。 一个名为“RemoteService” ,另一个名为“CallerService” 。 两者都源自默认的无状态服务项目。 在“RemoteService”和“CallerService”项目中,我添加了以下接口来描述它们之间的服务契约: public interface IMyService : IService { Task HelloNameAsync(string name); } 在“RemoteService”中,我在RemoteService类中创建了相关联的方法 public Task HelloNameAsync(string name) { return Task.FromResult(“Hello ” + name + “!”); } 我还使用以下内容覆盖CreateServiceInstanceListeners protected override IEnumerable CreateServiceInstanceListeners() { return new[] { new ServiceInstanceListener(context => this.CreateServiceRemotingListener(context)) }; } 在我的“CallerService”中,当我尝试连接时,使用以下内容调用“RemoteService”: IMyService helloNameClient = ServiceProxy.Create(new […]

调试本地IIS Web服务器上托管的ASP.NET MVC3应用程序

我已经设法使用本地IIS Web服务器来托管我的MVC3应用程序,我可以从托管它的机器调试它和所有东西。 – 但是,当我从另一台机器(我的Mac,在Parallels VM中运行我的Windows)发送请求时,我得到了预期的结果,但是调试器不会停在我的断点处! 我尝试添加Debugger.Break(); 我的行动,并崩溃w3wp.exe .. To,总结一下: 本地请求正在运行,可以调试。 外部请求正在运行,但无法进行调试。 在我的项目属性中,我设置了Use Local IIS Webserver , 未选中 Use IIS Express 。 我正在使用Visual Studio 2012 Professional。 该项目是基于Azure SDK的,附加的进程是WaIISHost.exe。

编译的Azurefunction监控:“无可用数据”

我在Azure上使用了几个已编译的C#函数。 它们按预期工作,但当我在任一function上单击“监视”时,它只显示“无可用数据”。 我可以看到在’Develop’选项卡的日志中运行的函数,但是想要概述函数的用法。 有什么我想念的吗?

对于T4模板,这是Azure Queue构造的一个好/可取的模式吗?

我正在构建一个T4模板,它将帮助人们以一致和简单的方式构建Azure队列。 我想让这个自我记录,并且有些一致。 首先我将队列名称放在文件的顶部,队列名称必须是小写的,所以我添加了ToLower() 公共构造函数使用内置的StorageClient API来访问连接字符串。 我已经看到了许多不同的方法,并希望得到几乎适用于所有情况的东西。 (想法?分享) 我不喜欢不需要的HTTP请求来检查队列是否已经创建,所以我做的是一个static bool 。 我没有实现Lock(monitorObject),因为我认为不需要。 而不是使用字符串并使用逗号解析(如大多数MSDN文档)我将对象传递到队列时序列化。 为了进一步优化,我使用JSON序列化器扩展方法来充分利用8k限制。 不确定编码是否有助于优化此function 添加了重试逻辑来处理队列中出现的某些情况(请参阅html链接) 问: “DataContext”是否适用于此类? 问:以我的方式命名队列行动名称是一种不好的做法吗? 您认为我应该做出哪些其他更改? public class AgentQueueDataContext { // Queue names must always be in lowercase // Is named like a const, but isn’t one because .ToLower won’t compile… static string AGENT_QUEUE_ACTION_NAME = “AgentQueueActions”.ToLower(); static bool QueuesWereCreated { get; set; […]

使用不同的分区模式在Azure DocumentDB中创建集合

有一些示例代码使用Microsoft.Azure.DocumentDB在azure documentDB中创建集合。 但是,我找不到有关如何使用c#创建具有不同分区模式的集合的信息。 从门户网站,有两种模式:单一分区和分区。 使用Microsoft.Azure.DocumentDB创建集合时,我们可以使用其中一个吗?

来自MemoryStream的AddAttachment

SendGrid API文档指定您可以从Stream添加附件。 它给出的示例使用FileStream对象 。 我在Azure存储中有一些blob,我想将其作为附件发送电子邮件。 要实现这一点,我正在尝试使用MemoryStream : var getBlob = blobContainer.GetBlobReferenceFromServer(fileUploadLink.Name); if(getBlob != null) { // Get file as a stream MemoryStream memoryStream = new MemoryStream(); getBlob.DownloadToStream(memoryStream); emailMessage.AddAttachment(memoryStream, fileUploadLink.Name); } emailTransport.Deliver(emailMessage); 它发送正常,但当电子邮件到达时,附件似乎在那里,但它实际上是空的。 查看电子邮件来源,附件没有内容。 在使用SendGrid C#API发送附件时,使用MemoryStream是一个已知的限制吗? 或者我应该以其他方式接近这个?

Azure函数用于写入队列 – 我可以设置元数据吗?

我可以从这个页面看到,当它们被用作触发器时,你可以简单地访问队列消息元数据属性,但我想做相反的事情。 我有一个Azure函数,它将消息写入队列,但它当前具有默认的到期时间,我想设置一个更短的过期时间,因此它们只在队列中存在很短的时间。 有没有办法从Azure函数将消息写入队列以设置过期时间? 谢谢 编辑1:有一点需要注意的是,我提前不知道队列的名称。 这是传入消息的一部分,因此将queuename设置为输出绑定的参数,我按照@Mikhail的建议进行了更改。 这是现在的function: #r “Microsoft.WindowsAzure.Storage” #r “Newtonsoft.Json” using System; using Microsoft.WindowsAzure.Storage.Queue; using Newtonsoft.Json; public static void Run(MyType myEventHubMessage, CloudQueue outputQueue, TraceWriter log) { var deviceId = myEventHubMessage.DeviceId; var data = JsonConvert.SerializeObject(myEventHubMessage); var msg = new CloudQueueMessage(data); log.Info($”C# Event Hub trigger function processed a message: {deviceId}”); outputQueue.AddMessage(msg, TimeSpan.FromMinutes(3), null, null, null); } […]