Tag: azure

在Azure函数中初始化AutoMapper

我正在尝试创建一个Azure函数,我在其中使用AutoMapper的一些代码。 我是C#,Azure和AutoMapper的新手,我在找到初始化AutoMapper配置的正确方法时遇到了一些麻烦。 MapInitializer.cs: public static class MapInitializer { public static void Activate() { Mapper.Initialize(cfg => { // initialize mappings here }); } } 然后在我的函数中,我尝试执行以下操作: Function.cs: public static class ProcessQueueForIntercom { [FunctionName(“ProcessQueue”)] public static void Run([QueueTrigger(“messages”)]string myQueueItem, TraceWriter log) { MapInitializer.Activate(); // rest of the code } } 现在的问题是,我第一次使用此function处理消息时,一切顺利,代码按照我的预期运行。 但是,从第二次开始,我收到一条错误,说我的配置已经初始化。 但我真的不知道如何使用Azure函数正确地执行此操作,因为通常您会在App Startup中初始化它,但我认为Azure Functions(CMIW)没有这样的东西,并且我没有找到关于如何做到这一点的更多信息。 我正在考虑用try catch围绕Activate()调用,只记录配置已经加载的警告,但这似乎不是很干净……

MessageReceiver.ReceiveBatch()未按预期工作

我试图使用MessageReceiver中的ReceiveBatch方法从ServiceBus批量接收消息: IEnumerable messages; var messagingfactory = MessagingFactory.CreateFromConnectionString(“ConnectionString”); var msgrcvr = messagingfactory.CreateMessageReceiver(“queueName”, ReceiveMode.ReceiveAndDelete); messages = msgrcvr.ReceiveBatch(20, timeoutInSecs); 我已经使用Service Bus Explorer检查了我的队列包含20条消息。 此代码仅在消息结构中返回一条消息。 我遗失了一些财产吗?

在WCF服务中触发并忘记

我在Azure上有一堆WCF REST服务。 在一些WCF服务中,我调用Http请求(比如发送Email / sms)到外部服务。 http请求非关键的第三方服务 。 我不希望这阻止我对客户端调用的响应。 需要一些关于在这种情况下使用的模式的指导。 这是我的wcf服务中的fire and forget模式。 WCF服务的伪代码 [WebInvoke(UriTemplate = “process”, Method = “POST”)] [OperationContract] public bool DoSomeProcessing(DataEntity data) { bool result = ProcessData(data); //I do not want this call to block SendSMS(); } //Call to third party public void SendSMS() { HttpWebRequest objWebRequest = null; HttpWebResponse objWebResponse = null; […]

连续Azure WebJob何时停止NoAutomaticTrigger类型作业的通知

所有, 我正在将现有的Worker Role代码迁移到Azure Web作业。 我正在尝试使用WebJob SDK(1.0),以便与Azure网站完全集成。 我的困难在于,JobHost不能很好地处理通常基于属性的调用选项(队列,Blob等)之外的作业。 我已经有了标准代码,我无法更改以收听Azure队列/主题等。因此我无法使用WebJob代码执行此操作。 因此我需要使用WebJob Call方法: var cancelTokenSource = new CancellationTokenSource(); var onStartMethod = typeof(Program).GetMethod(“OnStart”, BindingFlags.Static | BindingFlags.Public); host.CallAsync(onStartMethod, cancelTokenSource.Token) .ConfigureAwait(false) .GetAwaiter() .GetResult(); 注意:我正在使用自己的CallAsync,因为所有建议都是在使用库时使用ConfigureAwait(false),但是JobHost的内部工作没有这样做,所以我自己复制了它的“调用”代码但是使用了ConfigureAwait。 据我所知,取消令牌在JobHost中没有做任何事情。 我的问题是我需要调用host.RunAndBlock(); 停止工作退出,这很好,但后来我需要运行一些清理处理。 我无法使用OnStop方法重新调用“CallAsync”,因为主机已被取消,所以我所能做的就是直接调用我的OnStop方法。 不幸的是,我失去了通过提供的TextWriter类写入WebSite日志的能力。 我认为我需要的是JobHost在RunAndBlock中调用我的方法的一种方式,所以我可以拿起主机关闭时触发的取消令牌,然后执行我的清理代码….但似乎没有任何方式来做到这一点。 我有一种明显的方法吗? JobHost在处理场景之外似乎非常差,这是常态:(

增加Azure Api应用程序中的最大请求长度

我创建了一个Azure Api应用程序,我将用它来上传文件。 这些文件将> 4mb,因此需要增加最大请求长度。 我在Web.config中添加了以下内容: 我还补充说: 然而,我仍然得到Maximum request length exceeded.的exceptionMaximum request length exceeded. 。 我错过了什么吗? 我还能尝试别的吗? 谢谢!

使用c#备份和还原Azure sql数据库

我想将Azure sql数据库备份到我的本地系统,然后将该备份恢复到c#中的Azure sql数据库。 任何身体可以帮助我吗?有可能这样做吗?

如何在webapi上传中获取Multipart文件的流?

我需要使用Stream(Azure Blobstorage)上传文件,并且无法找到如何从对象本身获取流。 见下面的代码。 我是WebAPI的新手,并使用了一些示例。 我正在获取文件和filedata,但我的方法上传它并不正确。 因此,我需要将其转换或转换为普通Stream,此刻看起来有点难:) 我知道我需要使用ReadAsStreamAsync().Result以某种方式,但它在foreach循环中崩溃,因为我得到两个provider.Contents(第一个似乎正确,第二个没有)。 [System.Web.Http.HttpPost] public async Task Upload() { if (!Request.Content.IsMimeMultipartContent()) { this.Request.CreateResponse(HttpStatusCode.UnsupportedMediaType); } var provider = GetMultipartProvider(); var result = await Request.Content.ReadAsMultipartAsync(provider); // On upload, files are given a generic name like “BodyPart_26d6abe1-3ae1-416a-9429-b35f15e6e5d5” // so this is how you can get the original file name var originalFileName = GetDeserializedFileName(result.FileData.First()); // […]

QueueClient.Receive()的异步方法?

我正在使用服务总线来连接Web角色和worker角色。 我的worker角色处于连续循环中,我正在接收Web角色使用QueueClient.Receive()方法发送的消息。 但是使用此方法,如果服务总线队列上没有消息,它将等待几秒钟来接收消息,而不是移动到下一行以进一步执行。 我希望有一些接收消息的异步方法? 或至少某种方式来设置这个等待时间? 我从QueueClient的msdn文档中找到了这个BeginReceive方法,我希望这将是我的问题的答案,但我不知道如何使用这种方法。 方法参数是异步回调和对象状态,我不知道它们是什么。 有任何想法吗? 更新:由于Sandrino的一个很好的解决方案,它的工作是异步的。 但异步现在给了我一些问题。 我的VS崩溃了。 不确定是什么问题。 以下是我正在使用的代码。 工人角色: public override void Run() { while (!IsStopped) { // Receive the message from Web Role to upload the broadcast to queue BroadcastClient.BeginReceive(OnWebRoleMessageReceived, null); // Receive the message from SignalR BroadcastHub SignalRClient.BeginReceive(OnSignalRMessageReceived, null); } } public void OnWebRoleMessageReceived(IAsyncResult iar) { BrokeredMessage receivedBroadcastMessage […]

在azure上发布时列名无效

您好我在azure上发布了一个应用程序。 当我尝试访问BookDetail页面时,我收到InvalidColumn “Borrowed”错误。 在具有PhoneNumber和Password列的UserDetail页面上也会发生同样的事情。 这是BookDetail getmethod public IQueryable GetBook([QueryString(“BookID”)] int? BookID) { var _db = new WebApplication1.Models.LibraryContext(); IQueryable query = _db.Books; if (BookID.HasValue && BookID > 0) { query = query.Where(p => p.BookID == BookID); } else { query = null; } if (query == null || query.Count() == 0) { inputUserBorrow.Visible = false; inputUserBorrowButton.Visible […]

具有Http触发函数的连续Azure WebJob

我目前有一个azure webjob,它可以执行从一个数据库到另一个数据库的每日同步,但是也希望添加手动触发同步的function。 我在webjob项目中设置了如下函数: public static void SyncData([TimerTrigger(“0 0 5 * * *”, RunOnStartup = false)] TimerInfo timerInfo) { } [NoAutomaticTrigger] public static Task SyncAll(TraceWriter log){ } [NoAutomaticTrigger] public static Task SyncBranches(TraceWriter log){ } [NoAutomaticTrigger] public static Task SyncCustomers(TraceWriter log){ } [NoAutomaticTrigger] public static Task SyncInventory(TraceWriter log){ } 我可以在webjob下的Kudu仪表板中看到这些函数,但我不确定如何使用MS文档( 此处 )中列出的http请求触发函数: http://.azurewebsites.net/api/ 当我向该端点发出请求时,我收到了404响应 – 为了通过http请求手动触发这些function,我需要做什么? 谢谢,瑞恩