Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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
Azure功能http触发器Unity3d 2019.3_Azure_Unity3d_Unitywebrequest - Fatal编程技术网

Azure功能http触发器Unity3d 2019.3

Azure功能http触发器Unity3d 2019.3,azure,unity3d,unitywebrequest,Azure,Unity3d,Unitywebrequest,我已经创建了一个测试HTTP触发器azure函数。我可以在azure门户和浏览器上正确触发它。然而,Unity编辑器的触发器给出“错误HTTP/1.1500内部服务器错误” 正在启动Azure功能: public static async Task<IActionResult> Run(HttpRequest req, ILogger log){ log.LogInformation("C# HTTP trigger function processed a request.");

我已经创建了一个测试HTTP触发器azure函数。我可以在azure门户和浏览器上正确触发它。然而,Unity编辑器的触发器给出“错误HTTP/1.1500内部服务器错误”

正在启动Azure功能:

public static async Task<IActionResult> Run(HttpRequest req, ILogger log){
log.LogInformation("C# HTTP trigger function processed a request.");

string name = req.Query["name"];

string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;

return name != null
    ? (ActionResult)new OkObjectResult($"Hello, {name}")
    : new BadRequestObjectResult("Please pass a name on the query string or in the request body");}
Azure CORS配置:上的请求凭据:启用访问控制允许凭据。 功能设置始终处于打开状态。集成触发器:所选方法获取、发布。授权级别:功能

function's host.json: "version": "2.0", "extensionBundle": { "id": "Microsoft.Azure.Functions.ExtensionBundle", "version": "[1.*, 2.0.0)"
应用程序服务身份验证:匿名

Unity Azure和google setup搜索结果似乎都已过时/不受支持:(
请告诉我,我应该采取什么样的途径来实现此功能?很高兴尝试您建议的任何sdk/unity资产商店来访问azure!干杯!

错误出现在您代码的下面两行中:

string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
由于您在代码中设置了
text/plain
。因此,当您执行
www.SendWebRequest()
时,它将发送表单数据,而不是json格式的数据。因此,它将显示错误消息

下面我提供代码供您参考:

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    var arr = req.Form.Keys;
    foreach (var key in arr) {
        log.LogInformation(key);
        log.LogInformation(req.Form[key]);
    }

    return (ActionResult)new OkObjectResult("success");
}
公共静态异步任务运行(HttpRequest请求,ILogger日志)
{
LogInformation(“C#HTTP触发器函数处理了一个请求。”);
var arr=请求格式密钥;
foreach(arr中的var键){
日志、登录信息(密钥);
登录信息(请求表[键]);
}
返回(ActionResult)新的OkObjectResult(“成功”);
}
您可以在上面的代码中获取表单数据的键和值,然后将它们组合成json格式,然后执行
反序列化对象
。或者如果您想使用数据创建对象,您甚至可以不执行
反序列化对象
,直接将值设置到对象中

顺便说一句,您也可以尝试将代码中的
text/plain
更改为
application/json
,新的MultipartFormDataSection(“name”、“SampleName”、“text/plain”)。但是,由于我对
MultipartFormDataSection
了解不多,所以我不确定这个解决方案是否可行


希望有帮助。

然后,您需要调查发送的头和数据与其他内容之间的差异,并从服务器获取日志,以了解其导致的实际错误
public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    var arr = req.Form.Keys;
    foreach (var key in arr) {
        log.LogInformation(key);
        log.LogInformation(req.Form[key]);
    }

    return (ActionResult)new OkObjectResult("success");
}