在Chrome中停止调试后,Visual Studio ASP.NET崩溃

时间:2015-05-23 07:30:12

标签: visual-studio-2013 crash

我正在开发一个可以将音频文件流式传输到浏览器的网站。这是一个在Visual Studio 2013中开发的asp.net应用程序。使用范围请求标头使用部分内容响应将音频流式传输到客户端。代码如下所示:

    [HttpGet, ActionName("GetFile")]
    public HttpResponseMessage GetFile(string fileName)
    {
        var rootPath = AppDomain.CurrentDomain.BaseDirectory;
        var fullPath = Path.Combine(rootPath, "SoundFiles", fileName);

        byte[] file = File.ReadAllBytes(fullPath);
        var mediaType = MediaTypeHeaderValue.Parse("audio/mpeg");

        var memStream = new MemoryStream(file);

        if (Request.Headers.Range != null)
        {
            try
            {
                var partialResponse = Request.CreateResponse(HttpStatusCode.PartialContent);
                partialResponse.Content = new ByteRangeStreamContent(memStream, Request.Headers.Range, mediaType);
                return partialResponse;
            }
            catch (InvalidByteRangeException invalidByteRangeException)
            {
                return Request.CreateErrorResponse(invalidByteRangeException);
            }
        }
        else
        {
            var fullResponse = Request.CreateResponse(HttpStatusCode.OK);
            fullResponse.Content = new StreamContent(memStream);
            fullResponse.Content.Headers.ContentType = mediaType;
            return fullResponse;
        }
    }

每次播放歌曲时,都会调用此方法从服务器获取文件并将其部分流式传输到客户端。整个应用程序都是用signalr构建的。

这对我来说非常合适,代码没有任何问题。直到我买了一台新电脑。我正常安装我的Visual Studio 2013,包括IIS Express 8.0等。但是发生了一些奇怪的事情。

如果我开始使用谷歌浏览器调试,然后如果我对网站做了正常的事情但没有播放歌曲(不调用方法),然后再次停止调试我没有问题。但是,如果我在Chrome中启动并播放歌曲(调用方法)然后尝试停止调试,Visual studio会冻结,但没有任何信息可以挂起。它只是悬挂,我无法关闭它。我甚至无法通过任务管理器关闭它。没有显示错误。如果我试图关闭我的电脑,那么电脑将不会关闭,直到我按下电源按钮很长时间。现在奇怪的是:如果我尝试完全相同的东西,但在Internet Explorer中,Visual Studio正常工作,根本不挂。只有当我使用Chrome进行调试并且只在与Visual Studio运行的同一主机上时才会发生这种情况。如果我在网络中的其他设备上连接Chrome,则无效。

我想通了,我可以在没有调试的情况下运行应用程序。如果我这样做它效果很好,但是如果我播放一首歌然后尝试关闭Visual Studio,它会暂停大约30秒然后退出。

我无法找出问题所在。

我已经尝试过做的事情:

  • 重新安装Visual Studio 2013
  • 尝试使用Visual Studio 2015,效果相同
  • 重新安装Windows 8.1
  • 在Visual Studio中重置导入/导出设置
  • 以管理员身份运行Visual Studio
  • 将SoundFiles移动到其他目录
  • 尝试使用Google Chrome Canary,效果相同

真正奇怪的是,它只发生在同一台机器上的Chrome上,而且只发生在我的新电脑上。同样的场景在我的表面或旧笔记本电脑上完美运行。

我可以想象,因为chrome的原因是,chrome使用范围请求,即没有。它将音频的完整响应视为200,并且chrome将该范围视为部分内容。这可能是问题,但我不确定,我不知道如何解决或解决这个问题。

你们有个想法,可能导致这个问题的原因是什么?

1 个答案:

答案 0 :(得分:0)

好的,我没有找到问题,但我找到了解决方案。因为它是一台新PC,所以它上面还有一点点膨胀软件。我已经卸载了我不需要的东西,然后它神奇地工作了。不再崩溃了。我有一个华硕ROG G20AJ。我不确切知道哪个英国媒体报道软件导致了这个问题,但是其中有一些。因此,如果您在华硕机器上遇到类似的问题,请尝试卸载一些未使用的软件。

它不是Visual Studio崩溃,而是IIS服务。我真的认为这是一个非常奇怪的行为,因为崩溃只发生了,如果我执行上面的代码片段...无论如何,它现在有效!