首页 文章

可以使用异常HttpListener吗?

提问于
浏览
2

最近几天,我一直在使用HttpListener在C#中构建一个Web服务器应用程序 . 我在途中学到了很多东西,现在还是 . 目前我已经完成了所有工作,根据特定情况设置 Headers .

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

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

IE也有直接打开MP3文件和通过HTML5音频标签流式传输的问题 . 它也会不时变化 . 有时我打开页面,只发出2个请求 . HTML页面和MP3 . 没有错误 . 有时候,有3个请求 . 它连接到MP3两次 . 现在,有时其中一个连接在我打开页面后直接中止,有时2个请求到MP3文件,甚至不接受数据 . 在两个请求标头中,他们都希望文件结束 . 所以字节:123-123 / 124 . 我也在w3school的音频元素上测试过它 . IE也在那里进行两次连接,一次中止,另一次加载MP3文件 .

所以我的问题是,是否有可能使Web服务器异常/防错,或者更好的问题,抛出这些异常是不是很糟糕?或者您是否知道如何解决这些错误?

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

我写给客户的方式是:

using (Stream Output = _CResponse.OutputStream)
            {
                Output.Write(_FileOutput, rangeBegin, rangeLength);
            }

我不确定是否还有另一种(更好的)方式 . 这是我在研究过程中遇到的许多主题,教程和页面 .

关于 Headers :默认 Headers :内容长度,内容类型,状态代码 . 在某些情况下,比如MP3文件和视频,我添加了一个Accept-Ranges:Bytes Headers . 如果请求标头中包含Range,我会添加Content-Range标头和PartialContent状态代码 .

1 回答

  • 3

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

相关问题