在ASP.Net中将流写入响应

好吧,只想用我的解决方案澄清一些问题。

我需要从某个地方的存储库中获取文件,此存储库需要以cookie的forms传递会话令牌以及该文件的请求。

我正在针对此存储库对用户进行身份validation,并在用户首次登录到我的应用程序时将会话令牌存储在我的应用程序的用户cookie集合中。

问题是当用户尝试访问文件时,cookie不会被发送到存储库,因为存储库位于不同的URL和域上。 因此,我正在创建一个新的http请求,附加cookie并获取响应流。

我现在需要将此响应流发送回用户,标题和所有(因为此响应流将包含用户尝试访问的文件的标头)

我可以用这个:

string session = cookie.Value; StreamReader reader = new StreamReader(Utility.GetLinkStream(url, session)); Context.Response.ClearHeaders(); Context.Response.Clear(); Context.Response.Write(reader.ReadToEnd()); 

实际上,对Utility.GetLinkStream的调用将关闭并创建一个http请求,然后返回响应流。 对Write的调用会写出整个响应头和所有,还是有更好的方法来实现这个?

Response.Write()只会写内容,你必须在调用之前设置标题。 您可以枚举WebResponse中的标头,并手动将它们添加到Response.Headers。