Tag: stream

在流上腌制C#MD5 ComputeHash

我看不出任何方法来加密MD5.ComputeHash(Stream)。 我错过了一些将字节注入HashAlgorithm的方法吗? 我在执行流计算之前尝试执行ComputeHash(byte []),但不出所料,它没有任何效果。 任何想法(除了修改文件)? 谢谢你的时间。 附录只是为了更具体一点,我想使用一个流来获取我不想加载到内存中的大文件的哈希值。 FileInfo myFI= new FileInfo(“bigfile.dat”); FileStream myIFS = piFile.OpenRead(); MD5 md5 = MD5.Create(); byte[] hash = md5.ComputeHash ( myIFS ); myIFS.Close ();

如何使用带有Flowplayer的RTMP从Cloudfront运行私有内容video

重现步骤: 设置S3桶 建立流媒体分配 生成云端密钥对 使用RSA私钥下载.PEM文件 使用http://www.jensign.com/opensslkey/opensslkey.cs从RSA密钥生成XML 上传文件“testUnsecure.flv”,设置ACL属性,以便每个人都可以查看它。 使用以下java脚本设置网页: var p = flowplayer(“rtmpPlayer”,{src:“flowplayer-3.1.5.swf”,height:“480px”},{plugins:{rtmp:{url:’flowplayer.rtmp-3.1.3.swf’, netConnectionUrl:’rtmp://s3py83uop6xa8x.cloudfront.net/cfx/st’,objectEncoding:’0′}},clip:{autoPlay:false,url:’flv:testUnsecure’,provider:’rtmp’}}); 这有效! 然后做了这个: 上传testSecure.flv,设置ACL使其成为私有 生成签名URL并构建字符串。 javascript中的url如下所示: url: ‘FLV:testSecure%3fExpires%3d1277469187%26Signature%3dE5OleaO26fwLi6jIKTa4inc8I4P86AgTg5x8SmleTSTyf5C5AfnQyqaFXLDjiF0kiqdplhauA8Kw%7eS37EpRBAn-aJrJScVlw7aZ-SAL24MTLMZ9foSkCd2ai9KjS8AuuweJRwPWmf4eLDpI4X4f3k3H7UUVcq8SX92ed5fCB91w_%26Key对 – ID%3dAPKAJUIBASIKTLFDSDFA’ 这失败了。 video只是挂在那里…. 有谁知道怎么做 使用C#为私有video生成签名的URL? 在Flowplayer或JWPLayer中播放video(我将使用我可以使用的任何一个!) 还有几点 – 我使用与此相同的代码来生成签名URL: http : //beckelman.net/post/2010/03/30/Policy-Signing-in-C-for-Streaming-Private-Content-从-亚马逊CloudFront.aspx 如果你们能解决这个问题,我会为居住在距离我100英里范围内的所有人买一杯饮料。

如何将System.IO.Stream转换为图像?

如何将图像Stream (我使用MediaLibrary的Album.GetArt方法检索到)转换为应用程序中的可用Image ?

谁拥有.NET中的包裹流(例如TextWriter)?

我最近遇到一个错误“ObjectDisposedException:无法访问已关闭的流” [ObjectDisposedException: Cannot access a closed Stream.] System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) +10184402 System.Security.Cryptography.CryptoStream.FlushFinalBlock() +114 System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing) +48 使用以下格式的代码时: using (var stream = new MemoryStream()) { using (var hashStream = new CryptoStream(stream, new SHA256Managed(), CryptoStreamMode.Write)) using (var writer = new TextWriter(hashStream)) { writer.Write(“something”); } // ^– Exception occurs on hashStream Dispose // While naively […]

如何在不缓冲的情况下从WCF流式传输响应?

我有一个restful(webHttpBinding)自托管WCF服务。 大多数方法都将xml或json版本的对象返回给客户端。 我有几个触发长时间运行方法的GET方法,我想将日志响应流式传输到浏览器(或应用程序),以便用户知道发生了什么。 使用HttpContext.Current.Response.OutputStream.Write可以很容易地实现这一点。 不幸的是, HttpContext.Current在自托管WCF服务中始终为null,即使我包含aspNetCompatibilityEnabled配置(遗憾的是IIS不是一个选项)。 我尝试过AnonymousPipeServerStream : WCF和流请求和响应 以及第一个设置: OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse; context.ContentType = “text/plain”; 这样响应进入浏览器就不会将流下载到文件中进行保存。 在Chrome中它根本不起作用 – 它会缓冲到最后。 在IE或wget中,它似乎一次缓冲大约4k(或其他东西)。 这对于日志记录没有好处,除非我吐出大量不必要的日志消息来强制输出,用户并不真正知道发生了什么。 我只能假设这是因为响应实际上是一个分块响应而且块是4k(而不是只写入输出流)。 将chrome输出到输出的修复显然是在发送分块响应之前给内容写了一些垃圾: Chunked transfer encoding – 浏览器行为 ,但是,我不认为这对于WCF是可能的。 那么,我正在寻找可能的解决方案: 一种在自托管服务(无IIS)中写入WCF中的输出流的方法。 要么 一种控制流响应中的块大小的方法(以及首先编写一些内容以便Chrome将呈现块的方式)。 我认为另一种选择是放弃WCF,转而支持更友好的REST(我开始认为WCF不是正确的选择)。 但是,现在在WCF中写了这么多,这似乎是一项乏味的任务。 除非有一些我可以切换到的东西,这将是一个简单的迁移(例如,如果我可以重用相同的服务类,可能只有不同的属性)。 南希也许?

C#扩展SoapExtension –

背景:我正在尝试编写一个简单的SoapExtension类来记录来自asmx Web服务的入站/出站Soap消息。 在msdn上发表这篇文章之后,我已经能够把事情搞定了。 但是,我真的很想了解它为什么/如何工作,而不仅仅是复制和粘贴代码。 问题:我正在努力掌握的是在示例中处理IO流。 我在网上阅读的所有其他文章都以相同的方式处理流…首先获取对原始流的引用,创建内存“工作”流,然后根据需要交换内容。 第一个问题是,在这种情况下,“流链”是什么意思? 我对流的理解是,写入任何流将自动写入管道中的“内部”流。 如果是这种情况,为什么有必要手动将内容从一个流复制到另一个流? 第二个问题是,在示例复制方法中,他们每次都在创建一个StreamReader和StreamWriter,而不是处理它们 – 这是不是给GC带来了额外的压力? 在高流量的Web服务上看起来不像你想要的东西……我尝试将两者都包含在使用语句中,但是处理读取器/写入器也关闭了流,这导致了更严重的错误。 .NET 4有新的Stream.CopyTo(Stream)方法,但对于.NET 3.5来说,更好的方法是什么?

Web API Controller将MemoryStream转换为StreamContent

我有一大堆存储在安全服务器上的图像,其中一些需要在面向世界的门户上显示。 门户网站的服务器位于DMZ内部,允许请求但阻止直接请求进入安全域。 图像使用SOLR编目,可以通过内部(apache?)服务器从http://sofzh.miximages.com/c%23/file.jpg 在我的PhotoController我可以创建一个WebClient实例,给它提供url并获取一个MemoryStream 。 如果我尝试使用这个内存流来填充response.content,我会得到一个空响应(每个fiddler)。 如果我使用内存流写入本地文件,然后读取文件(使用FileStream和FileInfo)它“按预期”工作。 我应该能够从MemoryStream到StreamContent而无需通过文件系统(不应该)? 但怎么样? StreamContent(stream)的默认构造函数接受内存流实例而没有编译器错误……但它只是“不起作用”。 HttpResponseMessage response = Request.CreateResponse(); using (WebClient webClient = new WebClient()) { string url = string.Format(PHOTO_GET, filePath); using (MemoryStream memoryStream = new MemoryStream(webClient.DownloadData(url))) { // If these lines are unremarked the stream moves ‘through’ the file system and works (?!) //memoryStream.Position = 0; //string tempName = […]

在使用SqlDataReader时,如何从普通的旧C#对象中使用BLOB创建流?

这是场景: 我们在MSSQL数据库中的blob中存储文件,例如相对较大的文档(10-300MB)。 我们有一个非常小的域模型,所以我们使用干净的SqlDataReader方法为我们的存储库而不是ORM,以避免不必要的依赖。 我们希望在ASP.NET / ASP.NET MVC网页上使用服务器上下文中的对象。 我们不希望将blob临时存储在byte []中,以避免服务器上的高内存使用量 所以我一直在做的是实现我自己的SqlBlobReader。 它inheritance了Stream和IDisposable,在实例化过程中,我们必须提供一个包含查询的SqlCommand,该查询返回一行包含一列,这当然是我们想要流的blob。 然后我的C#域对象可以具有Stream类型的属性,该属性返回SqlBlobReader实现。 然后,当流式传输到ASP.net MVC等中的FileContentStream时,可以使用此流。 它将立即使用SequentialAccess执行ExecuteReader,以启用来自MSSQL服务器的blob流。 这意味着我们必须小心在使用它时尽快处理流,并且在需要时我们总是懒惰地实例化SqlBlobReader,例如在我们的域对象中使用存储库调用。 我的问题是: 当使用SqlDataReader而不是ORM时,这是在普通旧域对象上实现blob流的聪明方法吗? 我不是ADO.NET专家,实现看起来合理吗? SqlBlobReader.cs: using System; using System.Data; using System.Data.SqlClient; using System.IO; namespace Foo { /// /// There must be a SqlConnection that works inside the SqlCommand. Remember to dispose of the object after usage. /// public class SqlBlobReader […]

在ASP.NET Web Api C#中通过流发送和接收大型文件

我正在开发一个项目,我需要通过流从客户端向服务器发送大型音频文件。 我正在使用ASP.NET Web Api在客户端和服务器之间进行通信。 我的客户端有一个“SendFile”方法,我相信它工作正常,但我不知道如何让我的服务器接收我通过流发送的数据。 到目前为止,我的客户端代码如下所示: private const int MAX_CHUNK_SIZE = (1024 * 5000); private HttpWebRequest webRequest = null; private FileStream fileReader = null; private Stream requestStream = null; public bool SendAudio(string uri, string file) { byte[] fileData; fileReader = new FileStream(file, FileMode.Open, FileAccess.Read); webRequest = (HttpWebRequest)WebRequest.Create(uri); webRequest.Method = “POST”; webRequest.ContentLength = fileReader.Length; webRequest.Timeout = […]

在C#应用程序中显示tcpvideo流(来自FFPLAY / FFMPEG)

我尝试让我的Parrot AR Drone 2.0与windows机器配合使用。 我有一个简单的C#应用​​程序来控制它 – 但现在我想要我的应用程序内的video流。 如果我执行ffplay tcp://192.168.1.1:5555它会连接到video流并显示一个带video的窗口。 我如何在我的应用程序中获得此video? 比如,一个简单的“框架”或“图像”充满了这些内容? 我从来没有用C#做过那么多,所以任何帮助都会很棒。