C# WebRequest奇怪的NotFound错误
我有两个不同的ASP.NET核心网站:admin和public。 在临时服务器和本地计算机上运行 我向不同的页面发送GET请求,以确定不同页面的执行时间,并遇到管理站点问题:本地实例和登台上的所有URL始终返回404错误: 中发生类型为“System.Net.WebException”的未处理异常 System.dll 其他信息:远程服务器返回了一个错误:(404)不正确 找到了 同时,浏览器中的相同请求通常返回html页面。通过C# WebRequest奇怪的NotFound错误,c#,asp.net-core,httpwebrequest,http-status-code-404,webrequest,C#,Asp.net Core,Httpwebrequest,Http Status Code 404,Webrequest,我有两个不同的ASP.NET核心网站:admin和public。 在临时服务器和本地计算机上运行 我向不同的页面发送GET请求,以确定不同页面的执行时间,并遇到管理站点问题:本地实例和登台上的所有URL始终返回404错误: 中发生类型为“System.Net.WebException”的未处理异常 System.dll 其他信息:远程服务器返回了一个错误:(404)不正确 找到了 同时,浏览器中的相同请求通常返回html页面。通过HttpWebRequest向公共站点发出的请求也始终返回200状
HttpWebRequest
向公共站点发出的请求也始终返回200状态代码(OK)。
我的请求代码
我试图添加浏览器请求中的所有标题和cookie,但没有帮助。还尝试调试本地实例,发现在执行请求时未引发异常
有什么想法吗?404是通用的。在你的链接()中的答案中提供的代码没有错误处理——这是一个极好的例子,说明了当你盲目地从stackoverflow复制代码时,你是如何遇到麻烦的:) 带有错误处理的修改代码应如下所示:
string urlAddress = "http://google.com/rrr";
var request = (HttpWebRequest)WebRequest.Create(urlAddress);
string data = null;
string errorData = null;
try
{
using (var response = (HttpWebResponse)request.GetResponse())
{
data = ReadResponse(response);
}
}
catch (WebException exception)
{
using (var response = (HttpWebResponse)exception.Response)
{
errorData = ReadResponse(response);
}
}
static string ReadResponse(HttpWebResponse response)
{
if (response.CharacterSet == null)
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
return reader.ReadToEnd();
}
}
using (var reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(response.CharacterSet)))
{
return reader.ReadToEnd();
}
}
因此,当出现异常时,您将在errorData
变量中不仅得到状态代码,还得到服务器的整个响应
需要检查的一件事是代理-浏览器可以使用http代理,而您的服务器客户端不使用任何代理。404表示服务器中请求的内容不存在,例如默认网站(index.html)。。。尝试使用一个简单的
WebClient w=newwebclient();字符串s=w。下载字符串(“http://myserver.com");代码>只是出于好奇,你对自己的问题给予了可靠的奖励,其中一个或多个答案是典型的,值得额外奖励。。答案只有一个,所以应该是示范性的,但你没有接受,甚至没有投票。奇怪。使用fiddler捕获工作和失败尝试的通信。完成此操作后,您通常可以知道需要更改的内容。@Evgeny Levin虽然这不是一个好的做法,但可以将web应用程序配置为在身份验证或授权失败时返回404错误。在您提供的链接中,未进行身份验证。可能问题是身份验证失败,但服务器返回错误响应。我的5美分浏览器可以通过代理发送请求;如果是这样,请确保您精心编制的请求通过同一个代理。