我正在尝试结合 Unity 在本地调试 Azure Function 脚本,但每次都会出现超时错误。
我这里有一些东西,我不确定到底是哪一个导致了问题......它可能是 Windows 上的设置,与其中一个软件相反。
我在 Unity 2019.4 中构建,并使用 PlayFab 以及它使用 Azure Functions 的能力。当我尝试从 Azure 服务器执行脚本时,它运行正常。但是当我尝试使用本地调试运行它时,我得到了WebException: The request timed out System.Net.HttpWebRequest.GetRequestStream
(请参阅下面的完整错误)。
这是我正在做的设置:
- 将 PlayFab 设置为本地调试(通过 VS 代码扩展)(并确认 json 文件是在 temp 文件夹中制作的)
- 从此处安装 Azure Functions 核心工具
- 从 VS Code 启动 Azure Functions 调试(终端输出显示 localhost 正在正确运行它)
超时错误引用了http://localhost:7071/api/CloudScript/ExecuteFunction
启动 AzFunc 调试时在 VS 代码终端中确认的正确地址。
当我将项目克隆到我的 MacBook Pro 时,一切都在本地调试中顺利运行。
因此,正因为如此,我尝试检查以确保端口未被 PowerShell: 阻止netsh firewall show state
,并告诉 Windows Defender 不要阻止来自 Unity 或 Code 的任何内容。当我Netstat -ab
在 PowerShell/CMD 中运行时,我得到:
Can not obtain ownership information
TCP 0.0.0.0:7071 DESKTOP-COMPUTER:0 LISTENING
[func.exe]
TCP 0.0.0.0:7680 DESKTOP-COMPUTER:0 LISTENING
不知道这是问题还是正常...
我什至不知道还要检查什么。这个问题超出了我的范围。如果有人知道解决方案,或者可以指出正确的方向,我将不胜感激!
以下是当我在本地调试时通过 PlayFab 执行 Azure Function 脚本时 Unity 日志中的两个错误:
WebException: The request timed out
System.Net.HttpWebRequest.GetRequestStream () (at <14e3453b740b4bd690e8d4e5a013a715>:0)
PlayFab.Internal.PlayFabWebRequest.Post (PlayFab.Internal.CallRequestContainer reqContainer) (at Assets/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabWebRequest.cs:319)
Rethrow as WebException: Timeout: WebException making http request to: http://localhost:7071/api/CloudScript/ExecuteFunction
UnityEngine.Debug:LogException(Exception)
PlayFab.Internal.PlayFabWebRequest:Post(CallRequestContainer) (at Assets/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabWebRequest.cs:332)
PlayFab.Internal.PlayFabWebRequest:WorkerThreadMainLoop() (at Assets/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabWebRequest.cs:252)
System.Threading.ThreadHelper:ThreadStart()
Timeout: WebException making http request to: http://localhost:7071/api/CloudScript/ExecuteFunction
UnityEngine.Debug:Log(Object)
DemoScript:onPlayFabError(PlayFabError) (at Assets/PlayFabPartySDK/Examples/DemoScript.cs:264)
PlayFab.Internal.<>c__DisplayClass30_0:<QueueRequestError>b__0() (at Assets/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabWebRequest.cs:395)
PlayFab.Internal.PlayFabWebRequest:Update() (at Assets/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabWebRequest.cs:480)
PlayFab.Internal.PlayFabHttp:Update() (at Assets/PlayFabSDK/Shared/Internal/PlayFabHttp/PlayFabHTTP.cs:364)