我正在尝试向google-analytics服务器写一个简单的POST请求,这是我的代码:
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服务和应用程序中,每次DOMAIN和USERNAME都是我自己的,所以我不认为这是问题所在。我尝试过使用.NET模拟但没有成功。
我已尝试将应用程序池标识设置为我的用户,ApplicationPoolIdentity或NetworkService,但未成功。 我也尝试将身份验证模式更改为AnonymousUser或Windows身份验证。我尝试过更改物理访问路径,但没有成功。 我在代理人的背后工作,在家里我已经尝试过它并且效果很好。
有没有人知道为什么它不起作用?
答案 0 :(得分: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);
}