从Console App调用Rest API到存储模拟器,请求不显示在fiddler中

时间:2013-08-07 07:26:41

标签: azure azure-storage fiddler azure-storage-emulator

作为一个沙箱应用程序,我编写了一个控制台应用程序,它将调用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中的调用。

感谢。

1 个答案:

答案 0 :(得分:2)

要通过Fiddler跟踪您的请求,只需更改您的终端:

http://127.0.0.1:10000

http://ipv4.fiddler:10000

此外,您不需要app.config文件中的defaultProxy设置。如果您将其保留在那里,请将proxyaddresshttp://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"));
}