排除异常的HttpListener可能

本文关键字:可能 HttpListener 异常 排除 | 更新日期: 2023-09-27 18:03:11

最近几天我一直在用c#构建一个使用HttpListener的web服务器应用程序。在此过程中,我学到了很多,现在仍然如此。目前我得到了这一切的工作,设置头这里和那里取决于某些情况。

在大多数情况下工作正常,但是有时会抛出异常错误。这种情况偶尔会发生。大多数(如果不是全部)都在发送所有数据之前关闭连接。然后出现错误。但据我所知,其中一些确实是由浏览器引起的。

以Chrome为例。每当我直接访问MP3文件时,它都会发送2个GET请求。其中一个导致错误,另一个工作并接收部分内容。在这之后,我可以听MP3,没有任何问题。流媒体作品。但是回到给我错误的请求,我可以在我的代码中使用的标题中没有任何内容来不输出数据,就像我已经使用HEAD请求一样。所以我很困惑。

IE在直接打开MP3文件和通过HTML5音频标签流式传输时也有这个问题。它也随时间而变化。有时我打开页面,只有2个请求。HTML页面和MP3。没有错误。有时候,有3个请求。它连接到MP3两次。现在,有时其中一个连接在我打开页面后立即终止,有时对MP3文件的2个请求甚至不接受数据。在两个请求头中,它们都想要文件的结尾。字节:123-123/124。我还在w3school的音频元素上进行了测试。IE也在那里进行两次连接,一次被终止,另一次正在加载MP3文件。

所以我的问题是,是否有可能使web服务器异常/错误证明,或者更好的问题,是坏的,这些异常被抛出?或者您知道如何修复这些错误吗?

我得到的错误是:I/O操作被线程退出或应用程序请求终止。

我给客户写信的方式是:
            using (Stream Output = _CResponse.OutputStream)
            {
                Output.Write(_FileOutput, rangeBegin, rangeLength);
            }

我不确定是否有其他(更好的)方法。这是我在研究时在许多主题、教程和页面中遇到的。

关于报头:默认报头:内容长度,内容类型,状态码。在某些情况下,如MP3文件和视频,我添加了Accept-Ranges: Bytes头。如果请求标头中有Range,则添加Content-Range标头和PartialContent状态码。

排除异常的HttpListener可能

从服务器的角度来看,任何客户端都可以随时断开连接。这是服务器正常操作的一部分。检测这个特定的情况,记录它并吞下异常(因为它已经被处理了)。