Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

Windows 8 Metro App 无法联网问题-代理问题

$
0
0

Windows 8 Metro App 无法联网问题-代理问题


背景

最近又开始搞Windows 8 的开发,兴高采烈地下载Demo去,构建部署运行顺带用Nuget下载缺少的库,一路向西。

运行Demo的时候,居然连不上网,一惊!打开应用商店,财经,体育,全部都连不上网,我和我的小伙伴们都惊呆了!我的桌面程序应用全部都妥妥的啊!

上网找了一圈,发现会多人都出现这个问题。

原因:

主要是“代理和VPN”的设置影响的。由于实施了网络隔离,所有Metro App 默认就不能使用IP环回地址进行进程间通讯。我的理解是:使用了一些奇奇怪怪的VPN或者代理之后,这些VPN或者代理会设置本地全局代理,使得Metro App也使用本地代理。但是Metro App又不能访问本地IP,所以就扑街了。

我现在要开发啊!要调试啊!这个问题必须解决!而且我要能连接本地也能连接外部IP的解决方案。

已尝试的办法

我一直都没用使用VPN,所以我尝试的方法都是与代理有关的,但是效果都不怎样

没用!!但是如果想试试也可以 
[Download Windows Store Apps Troubleshooter for Windows 8
[Download Microsoft Accounts Troubleshooter for Windows 8]

打开IE,依次选择 Internet选项 --> 连接 --> 局域网设置(L) --> 检查 代理服务器 栏,取消勾选"为LAN使用代理服务器(这些设置不用于拨号或VPN连接)(X)"。如果没有勾选,并且你是使用拨号连接或宽带连接或VPN连接的,请返回上一个窗口。在 拨号或虚拟专用网络设置 栏,选中你正在使用的连接,比如 宽带连接 ,然后单击 设置,再次查看 代理服务器 栏,是否有勾选"为LAN使用代理服务器(这些设置不用于拨号或VPN连接)(X)",如果有,请取消勾选。

Win键+X键,选择 命令提示符(管理员)(A),即以管理员身份运行CMD命令提示符,依次输入以下命令

netsh
winhttp
import proxy source=ie

主要是设置成无代理,但是效果其实和前面一个方法一样的

【NoProxy.reg】
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"ProxyEnable"=dword:00000000

另外也提提通过注册表设置代理的方式

【ProxyPort8087.reg】
Regedit4
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"MigrateProxy"=dword:00000001
"ProxyEnable"=dword:00000001
"ProxyHttp1.1"=dword:00000000
"ProxyServer"="http://ProxyServername:80"
"ProxyOverride"="<local>"

通过使用CheckNetIsolation.exe【安装位置: C:\Windows\SysWOW64\CheckNetIsolation.exe 】可以指定某个APP是否解除网络隔离。想要具体应用的名字可以在C:\Users\<你的用户名>\AppData\Local\Packages下看到,文件夹名就是应用对应的名字。

用法:

添加豁免:CheckNetIsolation.exe LoopbackExempt -a -n=应用文件夹名

删除豁免:CheckNetIsolation.exe LoopbackExempt -d -n=应用文件夹名

列出所有免除网络隔离的AppContriner:CheckNetIsolation.exe LoopbackExempt -a -s

清楚所有豁免:CheckNetIsolation.exe LoopbackExempt -c

除了指定AppContainer的名字之外还可以使用指定ID的方式,但是不方便就不介绍了。我还写了一个简单的PowerShell脚本,一次添加所有豁免

$a = "-a"
$n = "-n="
$loop = "LoopbackExempt"

Foreach ($Item in  Get-Childitem C:\Users\lenovo\AppData\Local\Packages -name ) 
{
    $nn = $n+$Item
    $allarg = ($loop , $a ,$nn)
    Write-Host $Item
    & "C:\Windows\SysWOW64\CheckNetIsolation.exe" $allarg
}

如果不想碰代码的人,还有一个办法:MetroProxy.非常简单,原理和调用CheckNetIsolation.exe一样的。估计就是将CheckNetIsolation.exe封装了一下,写了个GUI。

不完美的方案: G-o-A-g-e-n-t

通过CheckNetIsolation.exe就可以使用本地代理了。连上8087的G-o-A-g-e-n-t之后,应用商店就可以联网了!但是,又出现另外一个问题:

  1. 使用G-o-A-g-e-n-t本地IP的服务访问不了
  2. 不使用G-o-A-g-e-n-t外部IP的服务访问不了

网上提示可以设置G-o-A-g-e-n-t配置文件为0.0.0.0,简单尝试了一下,不行。

最终方案:Fiddler2

在测试上面的方案的时候已经试过Fiddler2,但是没有深究。

今天杰哥一句“用fiddler做代理,fiddler的原理不就是自建代理吗?”真一言惊醒梦中人啊!

一点四十分了,不写了。。

解决办法自己看吧。。Windows 8 Metro Apps Proxy settings with fiddler2

  1. Install fiddler
  2. Now please install this addon
  3. Open fiddler and click on Win8 config, then click "Excempt All"
  4. Restart your system
  5. Set the proxy details in proxyfier or proxyfire
  6. Always open fiddler first and you can use it in tray with CTRL+M, then proxyfier(remove from startup)
作者:rodmanwu 发表于2013-7-30 14:46:46 原文链接
阅读:19 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>