2015-11-02 58 views
0

使HTTP请求我想写一个简单的POST请求,谷歌分析服务器,这里是我的代码:C#不能从网站或服务

 using (var client = new System.Net.WebClient()) 
     { 


      var values = new System.Collections.Specialized.NameValueCollection(); 
      //values["v"] = "1"; 
      //values["t"] = "event"; 
      //values["tid"] = trackingID; 
      //values["cid"] = clientID; 
      //values["ec"] = eventCategory.ToString(); 
      //values["ea"] = eventAction.ToString(); 
      //values["el"] = eventAction.ToString(); 

      var endpointAddress = "http://www.google-analytics.com/collect"; 
      var response = client.UploadValues(endpointAddress, values); 

      var responseString = System.Text.Encoding.Default.GetString(response); 
     } 

此代码工作正常在一个控制台应用程序,但不在网站应用程序(托管在IIS上或在Visual Studio 2013上运行)或WCF(同样)。 我检查了这两个网站使用

WindowsIdentity.GetCurrent() 

,WCF服务和应用程序,每次域和用户名是我自己,所以我不认为这是问题。我曾尝试使用.NET模拟没有成功。

我试着将应用程序池标识设置为我的用户ApplicationPoolIdentity或NetworkService,但没有成功。 我也尝试将身份验证模式更改为AnonymousUser或Windows身份验证。我试过改变物理访问路径,但没有成功。 我在代理的工作背后,在家里我已经尝试过它,它运作良好。

有没有人有一个想法,为什么它不工作?

+3

那么你会得到和错误? –

+0

@DavidMasters是的,我收到以下错误: 连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机未能响应而建立的连接失败 – ethilirion

+3

确定。仅供参考 - 错误消息对您的问题非常有用=) –

回答

2

尝试在提出请求时提供代理详细信息。假设你在代理之后。

using (var client = new System.Net.WebClient()) 
    { 
     WebProxy proxy = new WebProxy("localproxyIP:8080", true); 
     proxy.Credentials = new NetworkCredential("domain\\user", "password"); 
     WebRequest.DefaultWebProxy = proxy; 
     client.Proxy = proxy; 

     var values = new System.Collections.Specialized.NameValueCollection(); 
     //values["v"] = "1"; 
     //values["t"] = "event"; 
     //values["tid"] = trackingID; 
     //values["cid"] = clientID; 
     //values["ec"] = eventCategory.ToString(); 
     //values["ea"] = eventAction.ToString(); 
     //values["el"] = eventAction.ToString(); 

     var endpointAddress = "http://www.google-analytics.com/collect"; 
     var response = client.UploadValues(endpointAddress, values); 

     var responseString = System.Text.Encoding.Default.GetString(response); 
    } 
+0

好吧,这工作!我不得不深入了解proxy.pac脚本,但它仍然有效,非常感谢 – ethilirion