尝试从 Maui 应用程序访问本地主机时连接失败

问题描述 投票:0回答:1

不得不说,这让我难住了。从生产 URL (https://myhost.com/appname/myurl?param1=x¶m2=y) 调用 Web 服务 (ASP.NET) 时,一切正常。

当尝试从 Postman 的本地 IIS 服务器地址访问相同的 url (http://localhost:portnum/myurl?param1=x¶m2=y) 时,所有内容也会正确触发。

但是,当在我的 Maui 应用程序中尝试相同的 PostAsync 调用时,我遇到连接失败(并且 IIS 服务器实例上设置的调试点永远不会触发)。

我尝试过的事情:

  • 将 localhost 更改为我的特定计算机 IP (10.0.1.151)

  • 添加 network_security_config.xml 文件

     <?xml version="1.0" encoding="utf-8"?>
     <network-security-config>
       <domain-config cleartextTrafficPermitted="true">
         <domain includeSubdomains="true">10.0.0.2</domain>
         <domain includeSubdomains="true">10.0.1.151</domain>
         <domain includeSubdomains="true">localhost</domain>
       </domain-config>
     </network-security-config>
    
  • 在我的 AndroidManifest.xml 文件中具有相关引用:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto">
        <application android:allowBackup="false"   android:networkSecurityConfig="@xml/network_security_config" android:supportsRtl="true" android:label="MyApp" android:icon="@mipmap/myApp_app_icon"></application>
    </manifest>
    

所有这些都成功地将我的“连接错误”更改为“连接错误(任务已取消)”,因为任务超时(没有到达 IIS 中的调试点)。

我的防火墙已设置,以便所有端口上的所有内部流量都可以不受干扰地路由(这就是为什么 Postman 可以毫无问题地连接,其他 Visual Studio 表单应用程序等也可以)。

我无法通过模拟器或物理设备连接。

我错过了什么?

(尝试通过 https 连接遇到相同的超时/任务取消问题)

android asp.net-web-api maui visual-studio-2022
1个回答
0
投票

正如已经指出的;连接到本地主机永远不会起作用,因为它将在您正在运行的设备上查找服务器。这可能适用于 Windows 或 macOS,但不适用于 Android 或 iOS。

有关如何实现此目标以及需要注意的事项的官方文档可以在这里找到。

更简单的替代方案可能是使用 Visual Studio Dev Tunnels,我在那里有一个视频这里。使用开发隧道,您基本上可以创建一条从您的计算机到外部世界的隧道,从而将您的服务器暴露给公众。这使得从任何地方连接您的设备变得更加容易,包括您自己的机器。

Dev Tunnels 的一个较旧的解决方案和替代方案是 ngrok

© www.soinside.com 2019 - 2024. All rights reserved.