Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebRequest奇怪的NotFound错误_C#_Asp.net Core_Httpwebrequest_Http Status Code 404_Webrequest - Fatal编程技术网

C# WebRequest奇怪的NotFound错误

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状

我有两个不同的ASP.NET核心网站:admin和public。 在临时服务器和本地计算机上运行

我向不同的页面发送GET请求,以确定不同页面的执行时间,并遇到管理站点问题:本地实例和登台上的所有URL始终返回404错误:

中发生类型为“System.Net.WebException”的未处理异常 System.dll

其他信息:远程服务器返回了一个错误:(404)不正确 找到了

同时,浏览器中的相同请求通常返回html页面。通过
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美分浏览器可以通过代理发送请求;如果是这样,请确保您精心编制的请求通过同一个代理。