Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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# 如何从客户端应用程序调用Azure函数并添加一个或多个函数参数?_C#_Azure Functions - Fatal编程技术网

C# 如何从客户端应用程序调用Azure函数并添加一个或多个函数参数?

C# 如何从客户端应用程序调用Azure函数并添加一个或多个函数参数?,c#,azure-functions,C#,Azure Functions,我想从客户端应用程序调用这个Azure函数,但我不知道如何执行http请求 Azure功能: [FunctionName("ChangeDisplayname")] public static async Task<dynamic> MakeApiCall( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestM

我想从客户端应用程序调用这个Azure函数,但我不知道如何执行http请求

Azure功能:

    [FunctionName("ChangeDisplayname")]
    public static async Task<dynamic> MakeApiCall(
        [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage req, ILogger log)
    {
        var context = await FunctionContext<dynamic>.Create(req);
        var args = context.FunctionArgument;

        var desireddisplayname = args["NewDisplayname"];

        var request = new UpdateUserTitleDisplayNameRequest();
        request.PlayFabId = context.CallerEntityProfile.Lineage.MasterPlayerAccountId;
        request.DisplayName = desireddisplayname;
       
        var adminApi = new PlayFabAdminInstanceAPI(context.ApiSettings, context.AuthenticationContext);

        return await adminApi.UpdateUserTitleDisplayNameAsync(request);
    }
[FunctionName(“ChangeDisplayname”)]
公共静态异步任务MakeApiCall(
[HttpTrigger(AuthorizationLevel.Anonymous,“post”,Route=null)]HttpRequestMessage请求,ILogger日志)
{
var context=wait FunctionContext.Create(req);
var args=context.FunctionArgument;
var desireddisplayname=args[“NewDisplayname”];
var request=new UpdateUserTitleDisplayNameRequest();
request.PlayFabId=context.CallerEntityProfile.relege.MasterPlayerAccounted;
request.DisplayName=所需显示名称;
var adminApi=new PlayFabAdminInstanceAPI(context.ApiSettings,context.AuthenticationContext);
返回wait wait adminApi.UpdateUserTitleDisplayNameAsync(请求);
}
这是我调用Azure函数的客户端应用程序代码。但它不起作用,因为我不知道如何将desireddisplayname添加到http请求中desireddisplayname应该是函数参数“NewDisplayname”。例如,如果desireddisplayname=“Chris”,那么当我调用Azure函数时,var desireddisplayname应该具有相同的值“Chris”

当我使用wait\u httpClient.GetAsync(url)时,是否有可能添加desireddisplayname

如何从客户端应用程序调用Azure函数并添加一个或多个函数参数

    public static async Task<(bool requestexecuted, string desireddisplayname, string errormessage)> Azurehttprequest(this string url)
    {
        bool requestexecuted = false;
        string errormessage = string.Empty;

        var _httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(15) };

        try
        {
            using (var httpResponse = await _httpClient.GetAsync(url))
            {
                if (httpResponse.StatusCode == HttpStatusCode.OK)
                {
                    requestexecuted = true;
                }
                else
                {
                    requestexecuted = false;
                }
            }
        }
        catch (Exception)
        {
            requestexecuted = false;
        }

        return (requestexecuted, errormessage);
    }
公共静态异步任务Azurehttprequest(此字符串url)
{
bool requestexecuted=false;
string errormessage=string.Empty;
var_httpClient=newhttpclient{Timeout=TimeSpan.FromSeconds(15)};
尝试
{
使用(var httpResponse=awaitu httpClient.GetAsync(url))
{
if(httpResponse.StatusCode==HttpStatusCode.OK)
{
requestexecuted=true;
}
其他的
{
requestexecuted=false;
}
}
}
捕获(例外)
{
requestexecuted=false;
}
返回(requestexecuted,errormessage);
}
因为您的函数是一个HTTP POST端点,符合
[HttpTrigger(AuthorizationLevel.Anonymous,“POST”,Route=null)]
-您必须使用
HTTP POST
方法调用此函数的端点,而不是
HTTP GET

以下是您可能希望使用的代码:

客户端:

using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUri))
            {
                var body = new RequestModel
                {
                    NewDisplayname = desireddisplayname
                };

                request.Content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");

                    HttpResponseMessage responseMsg = await httpClient.SendAsync(request).ConfigureAwait(false);

                    if (responseMsg == null)
                    {
                        throw new InvalidOperationException(
                            string.Format(
                                "The response message was null when executing operation {0}.",
                                request.Method));
                    }

                    return responseMsg;
                }
// Get request body
                RequestModel data = await req.Content.ReadAsAsync<RequestModel>();
                name = data.NewDisplayname;
要读取的功能代码:

using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUri))
            {
                var body = new RequestModel
                {
                    NewDisplayname = desireddisplayname
                };

                request.Content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");

                    HttpResponseMessage responseMsg = await httpClient.SendAsync(request).ConfigureAwait(false);

                    if (responseMsg == null)
                    {
                        throw new InvalidOperationException(
                            string.Format(
                                "The response message was null when executing operation {0}.",
                                request.Method));
                    }

                    return responseMsg;
                }
// Get request body
                RequestModel data = await req.Content.ReadAsAsync<RequestModel>();
                name = data.NewDisplayname;
//获取请求正文
RequestModel data=wait req.Content.ReadAsAsync();
name=data.NewDisplayname;

您是否通过了和?Azure函数http触发器的作用类似于RESTAPI端点。所以你会像平常一样称呼它。在这种情况下,您的函数允许post,因此您将在客户端中使用。我不知道如何使用PostAsync从客户端调用我的Azure函数。你能告诉我怎么做吗?你试过从邮递员那里打电话给你的端点吗?首先通过邮递员进行测试,然后尝试从代码中调用;什么是“req”?我应该在哪里使用此代码?此外,我还收到一条错误消息:错误CS0246:找不到类型或命名空间名称“RequestModel”(您是否缺少using指令或程序集引用?)如何解决此问题?req是您问题中的HttpRequestMessage。您必须使用名为NewDisplayName的公共属性创建单独的类RequestModel。