Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从本地调用另一个功能应用程序?_C#_Azure_Azure Functions_Azure Function App - Fatal编程技术网

C# 如何从本地调用另一个功能应用程序?

C# 如何从本地调用另一个功能应用程序?,c#,azure,azure-functions,azure-function-app,C#,Azure,Azure Functions,Azure Function App,在Visual Studio中,我创建了两个Azure函数应用程序f1和f2 我已经更改了两个功能应用程序的端口 我想从f1调用f2,但我得到一个NotFound错误 f1正在使用 f2正在使用 我曾尝试在同一项目和不同项目中调用一个函数到另一个函数,两者都很好 函数1示例: [FunctionName(“Function1”)] 公共静态异步任务运行( [HttpTrigger(AuthorizationLevel.Anonymous,“get”,“post”,Route=null)]Htt

在Visual Studio中,我创建了两个Azure函数应用程序
f1
f2

我已经更改了两个功能应用程序的端口

我想从
f1
调用
f2
,但我得到一个
NotFound
错误

  • f1
    正在使用
  • f2
    正在使用

我曾尝试在同一项目和不同项目中调用
一个函数
另一个函数
,两者都很好

函数1示例:

[FunctionName(“Function1”)]
公共静态异步任务运行(
[HttpTrigger(AuthorizationLevel.Anonymous,“get”,“post”,Route=null)]HttpRequest请求,
ILogger日志)
{
LogInformation(“C#HTTP触发器函数处理了一个请求。”);
尝试
{
//提取请求参数
var content=wait new StreamReader(req.Body).ReadToEndAsync();
QnAMakerQuestion objQnAMakerQuestion=JsonConvert.DeserializeObject(内容);
//用于包含消息的全局变量
动态验证消息;
//验证参数
if(string.IsNullOrEmpty(objQnAMakerQuestion.question))
{
validationMessage=new OkObjectResult(“需要提问!”);
返回(IActionResult)验证消息;
}
//选择序列化请求参数
var json=JsonConvert.SerializeObject(objQnAMakerQuestion);
var stringContent=newstringcontent(json,unicodeincoding.UTF8,“application/json”);
//调用函数2
HttpClient newClient=新的HttpClient();
HttpResponseMessageResponseFromanotherFunction=等待新客户端。PostAsync(“http://localhost:7073/api/Function2FromApp2",内容),;
动态响应=”;
if(responseFromAnotherFunction.IsSuccessStatusCode)
{
response=responseFromAnotherFunction.Content.ReadAsStringAsync().Result;
}
validationMessage=新的OkObjectResult(响应);
返回(IActionResult)验证消息;
}
捕获(例外情况除外)
{
dynamic validationMessage=new OkObjectResult(string.Format(“出现问题,请尝试agian!原因:{0}”,ex.Message));
返回(IActionResult)验证消息;
}
}
函数2示例:

[FunctionName(“Function2FromApp2”)]
公共静态异步任务运行(
[HttpTrigger(AuthorizationLevel.Anonymous,“get”,“post”,Route=null)]HttpRequest请求,
ILogger日志)
{
LogInformation(“C#HTTP触发器函数处理了一个请求。”);
尝试
{
var content=wait new StreamReader(req.Body).ReadToEndAsync();
QnAMakerQuestion objQnAMakerQuestion=JsonConvert.DeserializeObject(内容);
//用于包含消息的全局变量
动态验证消息;
//验证参数
if(string.IsNullOrEmpty(objQnAMakerQuestion.question))
{
validationMessage=new OkObjectResult(“需要提问!”);
返回(IActionResult)验证消息;
}
validationMessage=新的OkObjectResult(objQnAMakerQuestion);
返回(IActionResult)验证消息;
}
捕获(例外情况除外)
{
dynamic validationMessage=new OkObjectResult(string.Format(“出现问题,请尝试agian!原因:{0}”,ex.Message));
返回(IActionResult)验证消息;
}
}
使用的类:

注意:如果在同一个项目中运行,则不会遇到任何问题。但如果您在不同的项目中运行,就会遇到问题 关于港口。要在
local.settings.json
文件中解决此问题,请替换 以下代码:

更新项目属性->调试到以下内容

主机启动--端口7073--出错时暂停
请参见下面的屏幕截图:

人工测试后:

我在邮递员上调用了
函数1
,它调用了
函数1
作为
函数1
调用了
函数2
,并从
函数2
函数1
发送响应,反之亦然。请参见下面的屏幕截图:


只需即插即用,如果您有任何其他问题,请告诉我。

不,两者都使用不同的url,端口号也不同。它们在同一解决方案或不同解决方案中运行应用程序?什么类型的触发器?可能是您编写函数的示例(主要对绑定和属性感兴趣)。
   public class QnAMakerQuestion
    {
        public string question { get; set; }

    }
"Host": {

    "LocalHttpPort": 7073

  }