Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法访问根据Visual Studio版本引发的关闭流_C#_Asp.net_Visual Studio 2012_Visual Studio 2013_Stream - Fatal编程技术网

C# 无法访问根据Visual Studio版本引发的关闭流

C# 无法访问根据Visual Studio版本引发的关闭流,c#,asp.net,visual-studio-2012,visual-studio-2013,stream,C#,Asp.net,Visual Studio 2012,Visual Studio 2013,Stream,我有一个有趣的场景,在.NET4中从流中写入和读取数据。这种行为在我从VisualStudio2012切换到2013年时首次出现。记住最后一句话,因为这是这个问题的主要原因。感觉VS的版本不应该以任何方式影响这种行为,因为我仍然在使用相同的框架版本进行编译 我的场景是,我正在运行ASP.NET WebForms,我们正在自定义正在呈现的特定ASP.NET控件的输出。实际上,它是一个与我们有继承关系的第三方控件,我们在其中自定义控件的输出 下面是发生错误的代码(为了更好地向您展示我的观点,我稍微修

我有一个有趣的场景,在.NET4中从流中写入和读取数据。这种行为在我从VisualStudio2012切换到2013年时首次出现。记住最后一句话,因为这是这个问题的主要原因。感觉VS的版本不应该以任何方式影响这种行为,因为我仍然在使用相同的框架版本进行编译

我的场景是,我正在运行ASP.NET WebForms,我们正在自定义正在呈现的特定ASP.NET控件的输出。实际上,它是一个与我们有继承关系的第三方控件,我们在其中自定义控件的输出

下面是发生错误的代码(为了更好地向您展示我的观点,我稍微修改了源代码):

以下是异常消息:

无法访问已关闭的流

我确实理解异常本身正在被抛出,正如这里所解释的:事实上,我很想知道为什么这段代码已经工作了这么长时间。stackoverflow上的许多不同答案清楚地指出,这不是处理流的正确方法

如果我在VisualStudio2012中编译了完全相同的代码,那么所有代码都“有效”,也就是说,我没有得到例外。然而,在VS2013中编译时,我确实遇到了一个例外

如果您已经阅读了本文,您可能还想了解我的环境设置。这些是我认为值得你了解的要点,以便提供指导

  • 网站项目
  • 在IIS 7.5中本地托管
  • 目标.NET 4.0
  • 使用任何CPU的内置调试模式
实际问题:Visual Studio的版本如何影响这种行为?


Update1:异常->公共语言运行时异常下的设置对于VS2012/13都设置为“用户未处理”“抛出”未选中。

您确定没有在VS2013中选中异常->公共语言运行时异常过滤器吗?也许它总是被抛出。@YuvalItzchakov我也这么想,但我仔细检查了那些设置,它们都是一样的。我将更新此内容并添加到问题中。这仍然是我从未发现真正问题的地方。在尝试将数据保存到新文本文件时,StreamWriter类也存在另一个问题。我仍然觉得StreamWriter类已经改变了行为(这听起来很奇怪)。
protected override void Render(HtmlTextWriter output)
{
    using (var stream = new System.IO.MemoryStream())
    {
        using (var writer = new System.IO.StreamWriter(stream))
        {
            var htmlWriter = new HtmlTextWriter(writer);
            base.Render(htmlWriter);
            htmlWriter.Flush();
            stream.Position = 0;

            using (var reader = new System.IO.StreamReader(stream))
            {
                string content = reader.ReadToEnd();
                // modify content...
                output.Write(content);
                reader.Close();
            }
        } // exception thrown
    }
}