我收到“远程服务器在下面的代码块上返回错误:(403)Forbidden”错误消息。特别是这一行失败了: var response =(HttpWebResponse)(request.GetResponse());
代码在我的开发机器上完美运行,但不适用于生产。我在两种环境中都使用IIS 7.5。两台计算机都已完成修补(安装了所有Windows更新)。使用4.0 .Net Framework。不确定为什么它在一台机器上工作而不是在其他机器上工作
代码:
var uri = new Uri(url);
var request = (HttpWebRequest)WebRequest.Create(uri);
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.Timeout = System.Threading.Timeout.Infinite;
request.Method = @"POST";
request.ContentType = @"application/x-www-form-urlencoded";
request.ContentLength = postData.Length;
request.UserAgent = @"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)";
request.Accept = "*/*";
//setup the stream variables and do the send/retrieve of data
Stream writeStream = request.GetRequestStream();
var bytes = System.Text.Encoding.ASCII.GetBytes(postData);
writeStream.Write(bytes, 0, bytes.Length);
writeStream.Close();
var response = (HttpWebResponse)(request.GetResponse());
var responseStream = response.GetResponseStream();
var readStream = new StreamReader(responseStream, Encoding.UTF8);
pageResponse = readStream.ReadToEnd();
答案 0 :(得分:1)
您可能需要指定凭据
request.Credentials = CredentialCache.DefaultCredentials;
或者如果您需要传递特定凭证,请传递:
request.Credentials = new NetworkCredentials("user", "password");
的更多信息
答案 1 :(得分:0)
您是否尝试使用您尝试访问的服务器的适当授权在请求上设置Credentials对象?请参阅System.Net.NetworkCredential。
答案 2 :(得分:0)
尝试检查生产和开发是应用程序的身份验证方法(iis manager - >点击网站 - >功能视图 - >身份验证)。
听起来就像在开发中你启用了匿名身份验证,而在生产中我没有。 如果您没有在生产中启用匿名身份验证,则可能需要设置request.Credentials,如上所示。