小编Jan*_*wak的帖子

Azure Webjobs与Azure功能:如何选择

我创建了一些使用触发器的Azure Webjobs,我刚刚学习了Azure Functions.

根据我的理解,Azure Functions似乎与Azure Webjobs功能重叠,我有一些难以理解何时在Function和Webjob之间进行选择:

  • 与Webjobs不同,函数只能被触发,它不是为了运行连续过程而设计的(但您可以编写代码来创建连续函数).

  • 您可以使用多种语言编写Webjobs和函数(C#,node.js,python ...),但您可以从Azure门户编写函数,以便更容易,更快地开发测试和部署函数.

  • Webjobs在App Service Web应用程序,API应用程序或移动应用程序的上下文中作为后台进程运行,而Function则使用Classic/Dynamic App Service Plan运行.

  • 关于缩放,函数似乎提供了更多的可能性,因为您可以使用动态应用程序服务计划,并且您可以扩展单个函数,而对于webjob,您必须扩展整个Web应用程序.

因此,确定存在价格差异,如果您运行现有的Web应用程序,您可以使用它来运行webjob而无需任何额外费用但是如果我没有现有的Web应用程序而且我必须编写代码来触发队列我应该使用webjob还是函数?

您需要选择时还需要记住其他注意事项吗?

azure azure-webjobs azure-functions

145
推荐指数
6
解决办法
4万
查看次数

Azure连接字符串最佳实践

我有一个应用程序,我只是迁移到Azure.目前我使用web.config转换来管理更改数据库连接字符串dev/staging/prod环境.如何在Azure中管理这些多个连接字符串?

connection-string azure application-settings staging azure-sql-database

50
推荐指数
5
解决办法
1万
查看次数

如何在Visual Studio中的其他端口上运行Azure Function应用程序

我在local.setting.json中设置本地主机端口.参考Microsoft doc https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local

该文件如下所示

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "AzureWebJobsDashboard": ""   
  },
  "Host": {
    "LocalHttpPort": 7073
  }
}
Run Code Online (Sandbox Code Playgroud)

当我运行/调试解决方案时,VS仍然在默认端口上托管应用程序(7071)

我已经检查了bin目录,该local.setting.json文件正在进行上述设置.从bin目录运行Azure Fucntion CLI(func host start)正确读取端口号.

看起来VS没有使用"LocalHttpPort"端口.设置中是否需要进行任何其他更改.我有Visual Studio 2017预览版(2)

azure azure-functions visual-studio-2017

45
推荐指数
9
解决办法
1万
查看次数

由Microsoft.NET.Sdk.Functions引起的版本冲突

我有一个项目引用2个软件包的问题,​​然后引用Newtonsoft.Json,但两个版本都不同.我使用的NuGet包RefitMicrosoft.NET.Sdk.Functions.当我尝试构建解决方案时,我收到以下错误:

C:\dev\noddy\noddy-api\src\noddy.Api>dotnet build
C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj : error NU1607: Version conflict detected for Newtonsoft.Json. Reference the package directly from the project to resolve this issue. \r
C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj : error NU1607:  noddy.Api (>= 1.0.0) -> Refit (>= 4.0.1) -> Newtonsoft.Json (>= 10.0.3) \r
C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj : error NU1607:  noddy.Api (>= 1.0.0) -> Microsoft.NET.Sdk.Functions (>= 1.0.2) -> Newtonsoft.Json (>= 9.0.1).
Run Code Online (Sandbox Code Playgroud)

现在,如果我按照它说的做,并直接从我的项目引用包,我在构建时会遇到另一个错误:

C:\dev\noddy\noddy-api\src\noddy.Api>dotnet add package Newtonsoft.Json
  Writing C:\Users\joebloggs\AppData\Local\Temp\tmp7250.tmp
info : Adding PackageReference for package 'Newtonsoft.Json' into project 'C:\dev\noddy\noddy-api\src\noddy.Api\noddy.Api.csproj'.
log  : Restoring packages …
Run Code Online (Sandbox Code Playgroud)

c# msbuild azure azure-functions

30
推荐指数
1
解决办法
1万
查看次数

执行测试时出错,如果使用CreateResponse扩展方法返回Azure Function HttpResonseMessage

我的Azure功能代码如下所示

public static class MyHttpTriggerFunction
{       
    public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
    {
        // some business logic

        if (valid)
        {
            return req.CreateResponse(HttpStatusCode.OK, true);
        }
        else
        {
             return req.CreateResponse(HttpStatusCode.BadRequest, "some error message");
        }            
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的测试项目中,我正在阅读如下结果:

var result = await MyHttpTriggerFunction.Run(req, log).ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)

执行该函数后,当它尝试在结果变量中返回响应时,测试方法失败并出现异常.

**

System.InvalidOperationException:请求没有关联的配置对象,或者提供的配置为null.

**

我确保测试项目具有相同的System.Net.Http.HttpRequestMessageExtensiondll.

如果我更改功能代码不使用CreateResponse扩展方法(此扩展方法来自VS 2017模板的代码)并返回如下所示的响应,我会在测试方法中获得响应并且测试用例运行正常.

var res = new HttpResponseMessage();
if (valid)
{
    res.StatusCode = HttpStatusCode.OK;
    res.Content = new ObjectContent<bool>(true, new JsonMediaTypeFormatter());        
    return res;
}
else …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing azure azure-functions visual-studio-2017

25
推荐指数
2
解决办法
7475
查看次数

我应该如何组织具有多个Azure功能的解决方案?

在哪里可以找到有关组织具有多个Azure功能的Visual Studio解决方案的指导?具体来说,该项目应该如何组织?

单个Azure功能驻留在单个类文件中.我想每个函数都可以是它自己的类文件,都存储在一个项目中.但这是最佳解决方案还是由于项目组织/解决方案组织不当而面临未来的复杂风险?

azure azure-functions

24
推荐指数
1
解决办法
6130
查看次数

在Azure功能应用程序中限制Azure存储队列处理

我创建了一个Azure功能应用程序,其中包含一个Azure存储队列触发器,用于处理每个队列项都是URL的队列.该功能只下载URL的内容.我有另一个函数加载和解析站点的XML站点地图,并将所有页面URL添加到队列中.我遇到的问题是,功能应用程序运行得太快,它会破坏网站,使其开始返回服务器错误.有没有办法限制/限制功能应用程序运行的速度?

当然,我可以编写一个简单的Web作业来连续处理它们(或者使用一些异步但限制并发请求的数量),但我真的很喜欢Azure Functions的简单性并想尝试"无服务器"计算.

azure azure-functions

23
推荐指数
3
解决办法
7948
查看次数

从localhost(而不是CLI)使用Azure功能的Cors

我们在vue.js应用程序中使用axios来访问Azure功能.现在我们收到这个错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:8080' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

我们试图以这种方式在函数中设置响应头:

context.res = {
        body: response.data,
         headers: {   
          'Access-Control-Allow-Credentials': 'true',
          'Access-Control-Allow-Origin': 'http://localhost:8080',
          'Access-Control-Allow-Methods': 'GET',
          'Access-Control-Request-Headers': 'X-Custom-Header'
         }
      }
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过这个错误?

azure cors azure-functions axios

21
推荐指数
6
解决办法
1万
查看次数

如何使用Binder在我的C#函数中执行动态绑定?

我需要绑定到输出blob,但blob路径需要在我的函数中动态计算.我该怎么做?

azure azure-functions

19
推荐指数
2
解决办法
5353
查看次数

Azure功能无法绑定ILogger

我的函数是引用一个引用Microsoft.Extensions.Logging.Abstractions 2.0.0的程序集.如果我将该版本的nuget引用添加到函数的程序集中,则函数执行将失败:

[1/25/2018 11:14:46 PM] Microsoft.Azure.WebJobs.Host:错误索引方法'TrainingFunction.Run'.Microsoft.Azure.WebJobs.Host:无法将参数'log'绑定到类型ILogger.确保绑定支持参数Type.如果您正在使用绑定扩展(例如ServiceBus,Timers等),请确保您已在启动代码中调用扩展的注册方法(例如config.UseServiceBus(),config.UseTimers()等).

是否可以在Azure功能中使用较新的记录器?(SDK 1.0.7)

azure azure-functions azure-functions-runtime

19
推荐指数
2
解决办法
5804
查看次数