我有一个xamarin android应用程序,当我尝试从我在本地NameResolutionFailureException.
托管的MVC网站下载图像时,它失败了。
防火墙关闭并且在genymotion模拟器中我可以在操作系统浏览器上看到文件,但是当我通过我的xamarin应用程序下载文件时会发生异常:using (var webClient = new WebClient())
{
var imageByte = webClient.DownloadData("http://10.0.3.2/imgs/1.jpg");
}
设置访问Internet的Android权限
{{1}}
答案 0 :(得分:1)
您可能需要在PC上打开防火墙以接受来自仿真器所具有的IP的远程连接(使用adb shell ifconfig
,因为SushiHangover建议查看仿真器的IP地址)
要设置防火墙规则以允许远程连接,请参阅本指南(它是关于WCF的,但无论使用何种服务技术,添加防火墙规则都应该相同): https://developer.xamarin.com/guides/cross-platform/application_fundamentals/web_services/walkthrough_working_with_WCF/#Configuring_Remote_Access_to_IIS_Express
相关位(编辑以取出对WCF的引用):
配置IIS Express以接受远程连接 - 此步骤涉及编辑IIS Express的配置文件以接受特定端口上的远程连接,然后为IIS Express设置规则以接受传入流量。
向Windows防火墙添加例外 - 我们必须通过远程应用程序可以使用的Windows防火墙打开一个端口。 您需要知道工作站的IP地址。出于本示例的目的,我们假设我们的工作站具有IP地址192.168.1.143。
让我们首先配置IIS Express以侦听外部请求。我们可以通过在[solutiondirectory] .vs \ config \ applicationhost.config编辑IIS Express的配置文件来完成此操作,如以下屏幕截图所示: 找到包含服务名称的site元素。它应该类似于以下XML代码段:
<site name="HelloWorldWcfHost" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="\\vmware-host\Shared Folders\tom\work\xamarin\code\private-samples\webservices\HelloWorld\HelloWorldWcfHost" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:9607:localhost" />
</bindings>
</site>
我们需要添加另一个绑定来打开外部流量的端口9608。将以下XML添加到bindings元素,用您自己的IP地址替换IP地址:
<binding protocol="http" bindingInformation="*:9608:192.168.1.143" />
这将使IIS Express能够接受来自计算机外部IP地址上端口9608上任何远程IP地址的HTTP流量。上面的代码片段假定运行IIS Express的计算机的IP地址为192.168.1.143。更改后,bindings元素应如下所示:
<site name="HelloWorldWcfHost" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="\\vmware-host\Shared Folders\tom\work\xamarin\code\private-samples\webservices\HelloWorld\HelloWorldWcfHost" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:9607:localhost" />
<binding protocol="http" bindingInformation="*:9608:192.168.1.143" />
</bindings>
</site>
接下来,我们需要配置IIS Express接受端口9608上的传入连接。启动管理命令提示符,然后运行以下命令:
netsh http add urlacl url=http://192.168.1.143:9608/ user=everyone
最后一步是将Windows防火墙配置为允许端口9608上的外部流量。从管理命令提示符处,运行以下命令:
netsh advfirewall firewall add rule name="IISExpressXamarin" dir=in protocol=tcp localport=9608 profile=private remoteip=localsubnet action=allow
此命令将允许来自与Windows 10工作站位于同一子网的所有设备的端口9608上的传入流量。