接收远程服务器返回一个错误:(403)禁止消息

本文关键字:一个 错误 消息 禁止 服务器 返回 | 更新日期: 2023-09-27 17:50:58

我在下面的代码块上收到"远程服务器返回错误:(403)Forbidden"错误消息。var response = (HttpWebResponse)(request.GetResponse());

代码在我的开发机器上工作得很好,但在生产机器上不行。我在这两个环境中都使用IIS 7.5。两台机器都打了补丁(安装了所有Windows更新)。使用4.0 . net框架。不知道为什么它在一台机器上工作,而在另一台机器上不行。

代码:

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();

接收远程服务器返回一个错误:(403)禁止消息

您可能需要指定凭据

request.Credentials = CredentialCache.DefaultCredentials;

或您,如果您需要传递特定的凭据pass:

request.Credentials = new NetworkCredentials("user", "password");

关于NetworkdCredential类的更多信息

您是否尝试在请求上设置凭据对象,并为您试图访问的服务器提供适当的授权?看到System.Net.NetworkCredential。

尝试在生产和开发中检查应用程序的身份验证方法(iis manager ->点击网站->features view ->authentication)。

听起来像是在开发版上启用了匿名身份验证,而在生产版上没有。如果在生产环境中不启用匿名身份验证,则可能需要设置请求。您可以在上面看到凭据。

相关文章: