作为一个沙箱应用程序,我编写了一个控制台应用程序,它将调用RestApi用于存储服务。应用程序正在按预期运行,我可以看到应用程序在Fiddler中进行的调用。我写了这个沙箱,以便我可以专门使用Rest API调用
我遇到的问题是如何查看我的应用程序对Fiddler中的存储模拟器进行的REST调用。 我知道如果我使用的是存储客户端库(azure SDK),那么可以使用以下
UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://ipv4.fiddler
我尝试在HttpWebRequest
上设置代理,但这也没有帮助我。继续我的代码摘录。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URI);
WebRequest.DefaultWebProxy = new WebProxy("http://ipv4.fiddler");
或
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URI);
request.Proxy = new WebProxy("http://ipv4.fiddler");
或
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URI);
request.Proxy = new WebProxy("127.0.0.1",8888);
还尝试在app.config中设置此项,如
<system.net>
<defaultProxy>
<proxy
proxyaddress="http://ipv4.fiddler"
bypassonlocal="False" />
</defaultProxy>
</system.net>
但似乎没有一个对我有用。再次只是为了清楚我的问题,应用程序运行正常,我的存储模拟器和我的订阅。唯一的问题是,如果针对存储模拟器执行,我无法看到Fiddler中的调用。
感谢。
答案 0 :(得分:2)
要通过Fiddler跟踪您的请求,只需更改您的终端:
http://127.0.0.1:10000
到
http://ipv4.fiddler:10000
此外,您不需要app.config文件中的defaultProxy
设置。如果您将其保留在那里,请将proxyaddress
从http://ipv4.fiddler
更改为http://127.0.0.1:8888
。所以你的app.config文件设置看起来像:
<system.net>
<defaultProxy>
<proxy usesystemdefault="False"
proxyaddress="http://127.0.0.1:8888"
bypassonlocal="False" />
</defaultProxy>
</system.net>
存储客户端库就是这样做的(https://github.com/WindowsAzure/azure-sdk-for-net/blob/master/microsoft-azure-api/Services/Storage/Lib/Common/CloudStorageAccount.cs - 上帝保佑Windows Azure团队在Github上提供代码)!
internal static CloudStorageAccount GetDevelopmentStorageAccount(Uri proxyUri)
{
if (proxyUri == null)
{
return DevelopmentStorageAccount;
}
string prefix = proxyUri.Scheme + "://" + proxyUri.Host;
return new CloudStorageAccount(
new StorageCredentials(DevstoreAccountSettingString, DevstoreAccountKey),
new Uri(prefix + ":10000/devstoreaccount1"),
new Uri(prefix + ":10001/devstoreaccount1"),
new Uri(prefix + ":10002/devstoreaccount1"));
}