小编Ram*_*ngh的帖子

如何在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万
查看次数

执行测试时出错,如果使用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功能中使路由参数可选

public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "ResolveKey/{key}/{resolver}")]HttpRequestMessage req, TraceWriter log, string key,string resolver= "default")
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我尝试通过设置默认值使resolver参数可选 string resolver= "default".代码编译并运行正常,但URL总是希望解析器参数存在,否则我得到404.

我想在上面的代码中使resolver参数可选.有什么办法吗?

azure azure-functions

8
推荐指数
1
解决办法
3217
查看次数

Visual Studio 2017 Azure功能模板没有 - run.csx或project.json等文件

我正在使用Visual Studio 2017预览(2)来创建Azure功能.为它生成的模板与我在Visual Studio 2015中获得的模板非常不同.

Visual Studio 2017模板为函数创建.cs文件,模板结构如下所示:

Visual Studio 2017 Azure功能模板结构

所有函数都创建为单独的.cs文件,并且没有run.csx,project.json或function.json文件,因此我无法指定特定于函数的依赖项和设置

如果我们使用Visual Studio 2015看到较早的模板(请参见下图),它很好地代表了Azure Portal上可用的文件夹和文件.它在具有所有.json和.csx文件的单个文件夹中具有功能.此文件夹结构有助于隔离与特定功能相关的文件(VS 2017模板不是这种情况)

Visual Studio 2015 Azure功能模板结构

在VS 2017中,我想通过添加project.json和function.json来指定特定于函数的依赖项和绑定设置.请告诉我实现这一目标的方法?

azure azure-functions visual-studio-2017

7
推荐指数
1
解决办法
2205
查看次数

Azure函数中的Autofac依赖注入

我试图在Azure功能中使用Autofac IOC实现DI.我需要构建容器,但不确定将代码放在何处构建容器

dependency-injection inversion-of-control azure autofac azure-functions

6
推荐指数
2
解决办法
6812
查看次数

将字符串参数绑定到 AzureFunction 中的 Enum 类型

我正在尝试将字符串路由参数绑定到枚举类型,如下所示

public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "ValidateKey/{keyType}/{key}")]HttpRequestMessage req, KeyType keyType, string key, TraceWriter log)
Run Code Online (Sandbox Code Playgroud)

当我到达端点时,代码给出了以下异常。

异常绑定参数“req”->从“System.String”到“MyCommon.KeyType”的转换无效。”

模型绑定器无法将字符串参数绑定到 Enum 类型。在 MVC 或 WebAPI 应用程序中,绑定到 Enum 工作正常,但 AzureFunction 似乎不支持该绑定。无论如何,是否可以在 AzureFunction 中插入自定义 ModelBinder 以使其正常工作?

enums defaultmodelbinder azure custom-model-binder azure-functions

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