我正在使用.NET 4构建一个网站.有很多MSDN文章可追溯到2003年,关于使用Thread对象和2007,使用.NET 2中的异步页面,但这都非常陈旧.我知道.NET 4给我们带来了Task类,有些人模糊地警告不要将它用于此目的.
所以我问你,在ASP.NET 4中的IIS下运行后台/异步工作的大约2011年的"首选"方法是什么?关于直接使用Thread/Task有什么警告吗?Async = true还在流行吗?
编辑:好的,好的,从答案中可以清楚地看到,如果可以,我应该提供服务.但是在webapp中执行它的优势非常明显,尤其是更容易部署/重新部署.假设这个过程是安全崩溃的,那么,如果我在IIS中做这个,那么最好的方法是什么?
使用Azure WebJobs SDK,我想创建一个异步函数,它将接收ServiceBus队列输入并写入ServiceBus队列输出.异步方法不能有参数,对于BlobStorage上的示例,似乎可以通过使用Streams和TextWrite来解决这些参数.但是,当我尝试使用ServiceBus参数执行相同操作时,我收到异常.
public static async void Transform(
[ServiceBusTrigger("%InputQueue%")] String input,
[ServiceBus("%OutputQueue%")] TextWriter output,
TextWriter log)
Run Code Online (Sandbox Code Playgroud)
错误索引方法'FilterCurrentCpesToNewCpes'
无法绑定ServiceBus以键入"System.IO.TextWriter".
我收到Stream的类似消息.
大家,
有人可以帮助我使用ARM模板部署WebJobs吗?
谢谢Rajaram.
我正在使用应用程序(.Net Core)通过Azure服务总线发送对象并通过Web作业(.Net Core)接收
问题是如何serialize/deserialize来send/receive的对象?
我找到了很多关于遗留BroakerMessage.GetBody()接收消息的参考,但不是新的.Net Core方法,请建议,谢谢.
发件人代码:
using Microsoft.Azure.ServiceBus;
MyClass object = new MyClass();
var message = new Message(object);
await queueClient.SendAsync(message);
Run Code Online (Sandbox Code Playgroud)
接收者代码:
using Microsoft.Azure.ServiceBus;
public void ProcessQueueMessage([ServiceBusTrigger("queue")] Message message, TextWriter log)
{
}
Run Code Online (Sandbox Code Playgroud) 轻松复制
引入了重大变化 https://github.com/Azure/app-service-announcements/issues/129
所以我安装
Microsoft.Azure.WebJobs.Extensions.Storage
这解决了QueueTriggerAttribute
但是在program.cs中
static void Main()
{
var config = new JobHostConfiguration();
if (config.IsDevelopment)
config.UseDevelopmentSettings();
var host = new JobHost(config);
host.RunAndBlock();
}
Run Code Online (Sandbox Code Playgroud)
我遇到了以下问题:
问题:
提前致谢!
我有一个简单的WebJob,我希望使用Azure存储模拟器进行测试.
我目前已将AzureJobsRuntime和AzureJobsData集设置为使用开发存储,如下所示:
<connectionStrings>
<add name="AzureJobsRuntime" connectionString="UseDevelopmentStorage=true;" />
<add name="AzureJobsData" connectionString="UseDevelopmentStorage=true;" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
webjob非常简单:
public static void Main(string[] args)
{
JobHost host = new JobHost();
host.RunAndBlock();
}
public static void Process([QueueInput("queue")] string input, [BlobOutput("containername/blobname")]TextWriter writer)
{
}
Run Code Online (Sandbox Code Playgroud)
这会在启动时抛出异常:
InvalidOperationException异常:
Windows Azure存储帐户连接字符串格式不正确
我已经能够使用相同的连接字符串和CloudStorageAccount类从网站创建队列并添加消息.
我有一个包含.net mvc网站和webjob的解决方案.
我使用git部署 - 所以在git push to azure上,我的网站升级了.我现在只是添加一个将按计划运行的控制台应用程序.我正试图弄清楚如何在网站上部署这个git push,但我不知道该怎么做.
我知道我可以创建一个文件夹website\app_data\jobs\triggered\webjob并将文件复制到那里(比如来自webjob上的后期构建事件),但这意味着我需要将所有这些文件提交到git repo以便部署来获取它们 -这也意味着每次我建立时,Git都会促使我再次犯下它们 - 呃.
有没有更好的方法来做到这一点 - 我可以将我的回购推广到azure,它将正确部署我的网站和我的webjob?
谢谢
使用VisualStudio 2015中的右键单击"发布为Azure WebJob ..."选项,即可发布作业,但似乎忽略了runMode.
在我的文件中,我有以下设置,但是在发布后,作业在门户网站中不断设置为按需作业:
{
"$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
"webJobName": "MyJob",
"startTime": "2015-07-21T00:30:00-08:00",
"endTime": null,
"jobRecurrenceFrequency": "Day",
"interval": 1,
"runMode": "Scheduled"
}
Run Code Online (Sandbox Code Playgroud)
将Visual Studio 2015与Azure SDK for .NET 2.7一起使用
以下是发布后输出窗口中的错误错误:创建WebJob计划时发生错误:无法从程序集'Microsoft.IdentityModel.Clients.ActiveDirectory,Version = 2.16加载类型'Microsoft.IdentityModel.Clients.ActiveDirectory.ActiveDirectoryAuthenticationException' .0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'.
我创建了一个控制台应用程序上传为Azure触发器Webjob.当我从Azure门户运行它时它工作正常.我想从我的C#代码中运行它.我不想使用队列或服务总线.我只是想在用户在我的网络应用中执行特定操作时触发它.
搜索后,我得到了一个解决方案来触发预定的 http://blog.davidebbo.com/2015/05/scheduled-webjob.html
知道如何从代码运行吗?
我在azure中有一个功能应用程序,当我点击功能应用程序的URL时,它显示"功能主机未运行".我不知道在哪里检查以及需要更改什么.我试过重启但仍然没有运气.
azure-webjobs ×10
azure ×8
c# ×5
.net-core ×1
asp.net ×1
asp.net-4.0 ×1
asynchronous ×1
iis ×1
kudu ×1