在我工作的地方,我们根据需要以及登台和生产环境创建Azure网站和SQL数据库以用于开发目的.我们为每个发布配置文件创建一个web.config转换,以将数据库连接字符串更改为与该网站关联的数据库.
现在,我正在尝试创建一个需要对数据库进行更新的Azure WebJob.我通过右键单击Web应用程序项目并选择添加新的Azure WebJob来创建它.
我需要做的就是我需要它做的是SQL数据库连接字符串,它指向Web App正在使用的同一个数据库.我知道这些可以在Azure门户中设置并使用配置管理器获取,但我宁愿能够在WebJob的App.config中使用它并根据需要转换App.config.
我尝试使用Slow Cheetah,但似乎只能对Debug和Release配置进行转换.
我开始完成本博客中指定的步骤:http: //gunnarpeipman.com/2013/11/using-web-config-transforms-with-app-config-files/
它告诉您如何手动编辑.csproj文件以启用App.config转换.但是,这不是更好的解决方案,因为您必须手动编辑项目文件以进行所需的每个转换.
谁能告诉我如何实现这一目标?它甚至可能吗?或者有没有办法在我的web应用程序的web.config文件中共享值,我知道这些值将转换为我需要的值?
我正在尝试使用Azure Webjobs,我理解它的工作方式,但我不明白为什么我需要使用两个连接字符串,一个是用于保存消息的队列但是
为什么还有一个名为"AzureWebJobsDashboard"的?
它的目的是什么?
我从哪里得到这个连接字符串?
目前我在同一个解决方案中有一个Web应用程序和一个Webjob,我只在本地进行实验(没有发布任何内容),我在云中找到的一件事是保存队列的存储帐户.
我甚至尝试在两个地方放置相同的连接字符串(AzureWebJobsDashboard,AzureWebJobsStorage),但抛出异常:"使用此触发器时无法绑定参数'log'."
谢谢.
当我在Visual Studio 2017的解决方案资源管理器中右键单击Web项目时,我没有看到"将现有项目添加为Azure Web作业"选项.我确实为Web项目安装了Nuget-packages,例如Microsoft.Web.WebJobs.Publish.我关注此链接https://docs.microsoft.com/en-us/azure/app-service-web/websites-dotnet-deploy-webjobs#convertlink以启用Web项目的自动WebJobs部署.
理想情况下,我应该看到这样,但突出显示的选项没有显示在我的视觉工作室2017 点击查看图像实际视觉工作室应该如何显示我一个选项
azure continuous-deployment azure-web-sites azure-webjobs visual-studio-2017
与Azure WebJobs SDK关联的大多数示例都具有如下所示的启动代码:
static void Main()
{
JobHost h = new JobHost();
h.RunAndBlock();
}
Run Code Online (Sandbox Code Playgroud)
但是,您也可以在不创建如下JobHost对象的情况下启动WebJob :
static void Main()
{
// Do something...
}
Run Code Online (Sandbox Code Playgroud)
在什么情况下是JobHost必要的?
我有一个连续的WebJob,我想配置为只有一个实例.
这是通过在"settings.job"文件中放置"{"is_singleton":true}"设置来实现的.
我正在努力的是部署这样一个文件.
我链接的文章建议您必须手动将此文件放在WebJob文件夹的根目录中.
"在添加此行之后,将settings.job文件保存到连续WebJob的根文件夹中."
该目录在部署之后才会存在,因此在部署之后,可能会有多个实例在运行,因为它没有该设置文件.所以我需要在WebJob中添加一些内容来检查单个实例设置是否存在,如果不存在则不运行?
这似乎很蹩脚......
同一篇文章建议使用WebJobs API,但同样这并不是内置于Publish过程,因此它是一个手动步骤或在WebJob本身运行的一些奇怪的代码.
我觉得我一定错过了使用Publish流程的方法.
我已经在谷歌上寻找那些做过同样事情的人,但我找不到多少.
我正在开发一个WebJob使用服务总线队列,但我没有Azure帐户.
是否存在一些Service Bus模拟器来测试webjob?我需要取队列输入来模拟[ServiceBusTrigger]
我认为这将是一个相当简单的任务,并且有相当多的文档,但我没有任何运气,并假设它几乎都过时了.
我有一段时间以来一直在开发的.NET Core MVC 6 Web App,需要在Azure上为它设置一个WebJob.我想使用Azure提供的应用程序已经在使用的持续部署系统将其与应用程序一起部署.根据Kudu文件,它是可能的:
哪个州:
这在直接从Visual Studio(WebDeploy)部署或通过git部署时都适用.
它引用了这个链接(https://azure.microsoft.com/en-us/documentation/articles/websites-dotnet-deploy-webjobs/),我一直试图遵循这个链接但没有成功.
我有最新版本的Visual Studio 2015,.NET Core 1.0.0和Tools以及Azure SDK.
显而易见的第一件事是我没有Azure文档屏幕截图中显示的脚手架选项,并且在找不到任何遗漏的依赖关系后,我试图按照描述手动设置它.
即使将所需文件放在指定的位置(webjobs-list.json和webjob-publish-settings.json)并为我的项目配置它们并添加Microsoft.Web.WebJobs.Publish到WebJob项目之后,Kudu也没有通过连续部署系统找到WebJob.
我已经根据我在那里发现的文档尝试了几种方法和变体,但我无法让它工作,所有其他SO问题都是一年之久.
有谁知道我做错了什么?使用最新版本的.NET Core MVC,这是否仍然可行?
我试图在azure上调试webjob,我收到以下错误:找不到源,找不到AsyncExtensions.cs.
我正在开发VS 2015,webjob是部署在Azure上的ASP.NET MVC解决方案的一部分.
我通过右键单击它并执行Publish as Azure webjob并选择Debug配置来发布webjob.我通过右键单击webjob并选择Debug,Start New Instance来启动调试.当执行到达有问题的行时,我得到上面的错误而不是对应于有问题的行的错误.这发生在几个不同的webjobs上.
我正在尝试将.NET Core Console应用程序部署为Azure WebJob.所有文件等都被复制到正确的目录,但我的控制台应用程序的输出是.dll,所以它需要dotnet.exe启动.
我用单个命令添加了一个run.cmd文件:dotnet QbiSync.dll.但输出如下,似乎找不到dotnet.exe:
[11/14/2016 13:15:29 > 4741da: SYS INFO] Run script 'run.cmd' with script host - 'WindowsScriptHost'
[11/14/2016 13:15:29 > 4741da: SYS INFO] Status changed to Running
[11/14/2016 13:15:29 > 4741da: INFO]
[11/14/2016 13:15:29 > 4741da: INFO] D:\local\Temp\jobs\continuous\QbiSync\x4jkoxww.vy4>dotnet QbiSync.dll
[11/14/2016 13:15:29 > 4741da: ERR ] 'dotnet' is not recognized as an internal or external command,
[11/14/2016 13:15:29 > 4741da: ERR ] operable program or batch file.
[11/14/2016 13:15:29 > 4741da: SYS ERR ] …Run Code Online (Sandbox Code Playgroud) 我是Azure WebJobs的新手,我运行了一个示例,其中用户将图像上传到blob存储并将记录插入到队列中,然后作业从队列中检索该记录作为信号来执行调整上传图像的大小.基本上在代码中,作业使用QueueTrigger公共静态方法的属性来完成所有这些操作.
现在我需要一个工作,就像每小时将一条记录插入数据库表,它没有任何类型的触发器,它只是自己运行.我该怎么做呢?
我尝试了一个静态方法,并在其中我插入到db,工作确实开始,但我收到一条消息说:
找不到任何功能.尝试将作业类公开,方法公共静态.
我错过了什么?
编辑 维克多的回答后,我尝试了以下方法,
static void Main()
{
JobHost host = new JobHost();
host.Call(typeof(Program).GetMethod("ManualTrigger"));
}
[NoAutomaticTrigger]
public static void ManualTrigger()
{
// insert records to db
}
Run Code Online (Sandbox Code Playgroud)
但这次我得到了InvalidOperationException,
无法从Azure WebJobs SDK调用"Void ManualTrigger()".是否缺少Azure WebJobs SDK属性?
azure-webjobs ×10
azure ×9
asp.net-mvc ×2
c# ×2
.net ×1
.net-core ×1
app-config ×1
emulation ×1
git ×1
kudu ×1