标签: azure-functions

执行测试时出错,如果使用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
查看次数

“Microsoft.EntityFrameworkCore.Query.QueryableMethods”的类型初始值设定项引发异常

我有一个函数应用程序,当我使用azure-functions-core-tools@4.0.3780 start命令运行它时,它会引发以下错误。

func start
Run Code Online (Sandbox Code Playgroud)
System.Private.CoreLib: Exception while executing function: Test. 
Microsoft.EntityFrameworkCore: The type initializer for 
'Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor' 
threw an exception. Microsoft.EntityFrameworkCore: 
The type initializer for 
'Microsoft.EntityFrameworkCore.Query.QueryableMethods' threw an exception. 
System.Linq: Sequence contains more than one matching element.
Run Code Online (Sandbox Code Playgroud)

入口点

func start
Run Code Online (Sandbox Code Playgroud)

从 Visual Studio 启动函数应用程序时,它工作正常。

我认为我可以通过在函数应用程序 csproj 中直接引用来摆脱它Microsoft.EntityFrameworkCore

有任何想法吗?

谢谢

FunctionApp.csproj

  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" 
    Version="4.3.0" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.13" />
    <PackageReference Include="Microsoft.Extensions.Http" Version="3.1.11" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\FirstLib\FirstLib.csproj" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

FirstLib.csproj

  <ItemGroup>
    <ProjectReference Include="..\SecondLib\SecondLib.csproj" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

SecondLib.csproj

 <ItemGroup> …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core azure-functions

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

Azure功能绑定重定向

是否可以在azure函数文件夹结构中包含web.config或app.config文件以允许程序集绑定重定向?

c# assembly-binding-redirect azure-functions visual-studio-2017 azure-functions-runtime

23
推荐指数
4
解决办法
6660
查看次数

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

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

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

azure azure-functions

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

在Visual Studio 2017中使用Azure功能定位.NET Core 2.0

由于Microsoft几天前发布了针对Azure Functions的.NET Core 2.0,我试图了解如何在面向.NET Core的VS2017中创建一个新的Functions项目.

我已经尝试了很多配置,但最终仍然使用.NET 4.7.

有没有人设法创建一个针对.NET Core的新功能?

谢谢.

azure azure-functions

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

异步编程和Azure功能

在Azure功能性能注意事项部分,https://docs.microsoft.com/en-us/azure/azure-functions/functions-best-practices 在使用异步代码但避免阻止调用异步编程是性能改进的建议做法无论什么是使用它的最佳方式.例如,在我的观点中,我有一个服务总线触发器

public static void Run([ServiceBusTrigger("topicname", "subname", 
     AccessRights.Manage, Connection = "TopicConnection")]string message, 
      TraceWriter log)
     {
     try {
        log.Info($"C# ServiceBus topic trigger function processed message: 
           {message}");

    Task.Run(() => PushToDb(message, log));
    }
    catch(Exception ex)
    {
        log.Info($"Exception found {ex.Message}");
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我调用了PushToDb方法异步,但由于它在后台运行,因此Function运行时假定消息已成功使用并完成它.如果PushToDb方法抛出异常怎么办?如何确保运行时知道它不完整,而应该放弃.

希望尽可能多地使用异步来提高性能.

c# azure azure-functions

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

尝试从 Visual Studio 发布 azure 函数时出错

当我尝试使用 Visual Studio 发布我的函数时收到以下错误消息,知道如何解决这个问题吗?

System.AggregateException:发生一个或多个错误。---> System.Exception: 发布遇到错误。我们无法确定错误的原因。检查输出日志以获取更多详细信息。--- 内部异常堆栈跟踪结束 --- 在 System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) 在 System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancelationToken) 在 Microsoft.Publish.Framework。 Model.DefaultPublishSteps.<>c__DisplayClass26_0.b__2() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.Execute() --- 来自上一个异常位置的堆栈跟踪结束抛出 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices。Microsoft.Publish.Framework.Model.DefaultPublishSteps.d__23.MoveNext() 处的 TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) --- 从上一个抛出异常的位置开始的堆栈跟踪结束 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (任务任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在 Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext() --->(内部异常 #0)System.Exception: Publish has遇到错误。我们无法确定错误的原因。检查输出日志以获取更多详细信息。<--- MoveNext() --- 从上一个抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext() --->(内部异常 #0) System.Exception:发布遇到错误。我们无法确定错误的原因。检查输出日志以获取更多详细信息。<--- MoveNext() --- 从上一个抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext() --->(内部异常 #0) System.Exception:发布遇到错误。我们无法确定错误的原因。检查输出日志以获取更多详细信息。<--- d__213.MoveNext() …

azure visual-studio azure-functions

23
推荐指数
6
解决办法
9032
查看次数

如何在NodeJS Azure功能中使用包管理?

我正在尝试将此示例项目构建为Azure功能,它需要一些软件包https://github.com/OfficeDev/O365-Nodejs-Microsoft-Graph-App-only

我可以看到我可以使用https://azure.microsoft.com/en-us/documentation/articles/functions-reference/#nodejavascript-api在NodeJS Azure功能中使用数据包管理

我试着用这个

var request = require('request');
Run Code Online (Sandbox Code Playgroud)

这个说法

You can include packages in your function directory (i.e. via npm install) and then import them to your function in the usual ways (i.e. via require('packagename'))
Run Code Online (Sandbox Code Playgroud)

所以我在其中创建了一个project.json,就像C#Azure Function使用的那样:

{
  "frameworks": {
    "net46":{
      "dependencies": {
        "chalk": "^1.1.1",
        "q": "^1.4.1",
        "request": "^2.67.0"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

并得到此错误

2016-04-06T19:49:42.026 Exception while executing function: Functions.MicrosoftGraphWebHookNode. mscorlib: One or more errors occurred. Error: Cannot find module 'request'
    at Function.Module._resolveFilename (module.js:339:15)
    at Function.Module._load (module.js:290:25) …
Run Code Online (Sandbox Code Playgroud)

azure-functions

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

无法在 Azure Functions 中加载文件或程序集“Microsoft.Extensions.Configuration.Abstractions,版本 = 5.0.0.0”

我有一个 API 和一个单独的 Azure Functions 应用程序。我将我的 API 应用程序升级到.NET 5,它运行良好。在 API 应用程序的解决方案中,我也有在 Azure Functions 应用程序中引用的类库项目。这些类库是netstandard2.1项目。

自从这次更新(在此期间我还将所有 NuGet 包更新到最新版本)之后,我的 Azure Functions 应用程序停止工作。我收到以下错误:

无法加载文件或程序集“Microsoft.Extensions.Configuration.Abstractions,Version=5.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”。该系统找不到指定的文件。值不能为空。(参数'提供者')

我注意到有涉及Microsoft.Extensions.*软件包的重大更改,他们的建议是直接安装导致问题的软件包。所以我Microsoft.Extensions.Configuration.Abstractions手动添加到我的 Azure 函数 - 在它作为Microsoft.Extensions.Configuration包的依赖项安装之前。这是关于此的信息:https : //github.com/dotnet/aspnetcore/issues/21033

问题仍然存在。我什至尝试Microsoft.Extensions.Configuration在 API 和 Functions 应用程序中降级,但我仍然遇到相同的错误。

知道如何解决这个问题吗?

.net-core asp.net-core azure-functions .net-5

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