Visual Studio ASP.NET 在 Chrome 中停止调试后崩溃
Visual Studio ASP.NET crashes after Stop Debug in Chrome
我正在开发一个可以将音频文件流式传输到浏览器的网站。这是我在 Visual Studio 2013 年开发的 asp.net 应用程序。要使用范围请求 headers 使用部分内容响应将音频流式传输到客户端。代码如下所示:
[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 等。但是发生了一些奇怪的事情。
如果我用 Google Chrome 开始调试,然后如果我对网站进行正常操作但不播放歌曲(不调用方法),然后再次停止调试我没有问题。但是,如果我在 Chrome 中启动它并播放歌曲(调用方法)然后尝试停止调试,visual studio 会冻结但没有任何信息表明它已挂起。它只是挂着,我无法关闭它。我什至不能用任务管理器关闭它。没有错误显示。如果我尝试关闭我的电脑,那么在我长时间按下电源按钮之前,电脑不会关闭。现在奇怪的是:如果我在 Internet Explorer 中尝试完全相同的操作,Visual Studio 会正常工作并且根本不会挂起。仅当我使用 Chrome 进行调试并且仅在与 Visual studio 相同的主机上时才会发生这种情况是 运行ning。如果我在网络中的其他设备上连接 Chrome,它没有任何效果。
我想通了,我可以 运行 应用程序而无需调试。如果我这样做效果很好,但如果我播放一首歌曲然后尝试关闭 Visual Studio,它会很快挂起大约 30 秒然后退出。
我无法找出问题所在。
我已经尝试过的事情:
- 重新安装 Visual Studio 2013
- 用Visual Studio2015试试,效果一样
- 重新安装Windows8.1
- 在 Visual Studio
中重置 Import/Export 设置
- 运行 Visual Studio 作为管理员
- 将 SoundFiles 移动到其他目录
- 试试Google Chrome Canary,效果一样
真正奇怪的是,它只发生在同一台机器上的 Chrome 上,而且只发生在我的新电脑上。同样的场景在我的 surface 或旧笔记本电脑上完美运行。
出于 chrome 的原因,我可以想象的是,chrome 使用范围请求,即不使用。它将音频的完整 Response 取为 200,chrome 将范围取为部分内容。这可能是问题所在,但我不确定,也不知道如何解决或解决这个问题。
你们有什么想法,可能导致这个问题的原因是什么?
好的,我没能找到问题所在,但我找到了解决方案。因为它是一台新 PC,所以上面有一点英国媒体报道软件。我已经卸载了我不需要的东西,然后它神奇地工作了。没有崩溃了。我有一个华硕 ROG G20AJ。我不知道到底是哪个英国媒体报道软件导致了这个问题,但它是其中的一些。所以如果你在华硕机器上有类似的问题,请尝试卸载一些不用的软件。
不是 Visual Studio 崩溃,而是 IIS 服务崩溃。我真的认为这是一个非常奇怪的行为,因为只有当我执行上面的代码片段时才会发生崩溃......无论如何,它现在可以工作了!
我正在开发一个可以将音频文件流式传输到浏览器的网站。这是我在 Visual Studio 2013 年开发的 asp.net 应用程序。要使用范围请求 headers 使用部分内容响应将音频流式传输到客户端。代码如下所示:
[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 等。但是发生了一些奇怪的事情。
如果我用 Google Chrome 开始调试,然后如果我对网站进行正常操作但不播放歌曲(不调用方法),然后再次停止调试我没有问题。但是,如果我在 Chrome 中启动它并播放歌曲(调用方法)然后尝试停止调试,visual studio 会冻结但没有任何信息表明它已挂起。它只是挂着,我无法关闭它。我什至不能用任务管理器关闭它。没有错误显示。如果我尝试关闭我的电脑,那么在我长时间按下电源按钮之前,电脑不会关闭。现在奇怪的是:如果我在 Internet Explorer 中尝试完全相同的操作,Visual Studio 会正常工作并且根本不会挂起。仅当我使用 Chrome 进行调试并且仅在与 Visual studio 相同的主机上时才会发生这种情况是 运行ning。如果我在网络中的其他设备上连接 Chrome,它没有任何效果。
我想通了,我可以 运行 应用程序而无需调试。如果我这样做效果很好,但如果我播放一首歌曲然后尝试关闭 Visual Studio,它会很快挂起大约 30 秒然后退出。
我无法找出问题所在。
我已经尝试过的事情:
- 重新安装 Visual Studio 2013
- 用Visual Studio2015试试,效果一样
- 重新安装Windows8.1
- 在 Visual Studio 中重置 Import/Export 设置
- 运行 Visual Studio 作为管理员
- 将 SoundFiles 移动到其他目录
- 试试Google Chrome Canary,效果一样
真正奇怪的是,它只发生在同一台机器上的 Chrome 上,而且只发生在我的新电脑上。同样的场景在我的 surface 或旧笔记本电脑上完美运行。
出于 chrome 的原因,我可以想象的是,chrome 使用范围请求,即不使用。它将音频的完整 Response 取为 200,chrome 将范围取为部分内容。这可能是问题所在,但我不确定,也不知道如何解决或解决这个问题。
你们有什么想法,可能导致这个问题的原因是什么?
好的,我没能找到问题所在,但我找到了解决方案。因为它是一台新 PC,所以上面有一点英国媒体报道软件。我已经卸载了我不需要的东西,然后它神奇地工作了。没有崩溃了。我有一个华硕 ROG G20AJ。我不知道到底是哪个英国媒体报道软件导致了这个问题,但它是其中的一些。所以如果你在华硕机器上有类似的问题,请尝试卸载一些不用的软件。
不是 Visual Studio 崩溃,而是 IIS 服务崩溃。我真的认为这是一个非常奇怪的行为,因为只有当我执行上面的代码片段时才会发生崩溃......无论如何,它现在可以工作了!