我有一个简单的测试应用程序(C#控制台应用程序),它对.NET资源执行HTTP GET:
static void Main(string[] args)
{
while (true)
{
try
{
System.Net.WebRequest req = System.Net.WebRequest.Create("http://ranger/roztest/Default.aspx");
System.Net.WebResponse resp = req.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
Console.WriteLine(DateTime.Now.Ticks.ToString() + " - " + sr.ReadToEnd().Trim());
}
catch (Exception ex)
{
Console.WriteLine(DateTime.Now.Ticks.ToString() + " - " + "An Exception has occured: " + ex.GetType().ToString() + " - " + ex.Message);
}
Thread.Sleep(2000);
}
}
如果我执行以下命令:
net stop w3svc
IIS将停止。我编写的命令行实用程序将返回System.Net.WebException“(404)Not Found”。
如果IIS停止,哪个进程返回404?
是包含IIS服务的svchost.exe吗?
背景资料:
我在Windows 7(x64)Professional上运行IIS 7下的Default.aspx页面。
WebException正在“req.GetResponse()”行中抛出。
答案 0 :(得分:2)
出现了更多线索:
查看以下post from Mike Volodarsky:
从Windows 2003开始,IIS使用 要监听的http.sys内核驱动程序 对于请求,以及W3SVC服务 将其配置为侦听请求 与...相关的所有绑定端点 你的网站。在IIS7上,服务在做 大部分工作现在称为WAS (即使需要W3SVC)。一个 配置错误可能导致 WAS / W3SVC无法启动站点,并且 因此http.sys将不会收到 在其端点上的请求。也, 该网站有机会 定义本身缺失,或者 网站没有定义权利 绑定。
答案 1 :(得分:0)
您正在向机器发送“愤怒”请求。这与您停止IIS的机器相同吗?
答案 2 :(得分:0)
我相信(如果你真的连接到一个根本没有响应的服务器),可能是.NET网络堆栈本身就抛出异常 - 可能与连接超时有关。