4

我们有 ac# asp.net web 应用程序,除其他外,它允许用户下载以前上传的文件,如 PDF、Word 文档等。asp.net 应用程序通过 IIS6 服务器提供服务,文件资源位于不同的服务器上服务器。

当用户请求一个文件时(即单击 Web 表单上的按钮),我们将文件流式传输回他们的浏览器,相应地更改 ContentType。

这似乎是避免通过 IIS 虚拟文件夹路径来提供文件资源的好方法——我们担心用户可能会破解 URL。即使用https://mydomain/myresource/clientid/myreport.docx 之类的 URL ,精明的用户可以很好地猜测替代 cvlientid 和文档名称。

将 Word 文档流式传输到浏览器的问题在于,当浏览器将其扔给 Word 时,Word 会将其视为全新的文档,这意味着原始文档的属性和边距信息会丢失。

我们的用户将元数据信息存储在 Word 文档属性中,因此他们无法接受这种解决方案。

通过 IIS 虚拟文件夹提供服务解决了这个问题,但引入了 URL 安全问题。

所以我的问题是...

有谁知道我们如何对 IIS 虚拟文件夹使用 URL 加密/解密(或混淆)?
或者有谁知道做类似工作的任何开源项目。
或者是否有人对如何编写我们自己的虚拟文件夹实现但使用加密的 URL 有任何建议?

提前谢谢了。

附言。我们的网络应用程序通过 https 交付

4

2 回答 2

0

您可能会发现ClaimsAuthorizationManager“Windows Identity Foundation”中的类可以满足您的需求。您可以实现任何您喜欢的逻辑来确定谁可以在不使用“目录安全”的情况下下载什么。

于 2010-04-19T20:42:15.833 回答
0

对不起,伙计们,在我的问题中,我做了一些不正确的假设。

我要做的是在将存储在 word 文档中的属性从服务器(使用 Response.TransmitFile 或通过虚拟文件夹)传递到客户端浏览器时持久保存它们。

我使用 IIS 虚拟文件夹设置了一个测试场景,并在我的虚拟文件夹的物理路径中放置了一个 docx 文件(我知道该文件包含标题和主题属性中的信息)。

我将浏览器指向虚拟文件夹别名,浏览器弹出消息以打开或保存文档。

如果我选择保存它,保存的 docx 仍然具有完整的属性。

如果我选择先打开它然后从 Word 中保存它,则保存的 docx 会丢失属性。

所以我想我需要发布一个不同的问题!

于 2010-02-25T16:34:59.007 回答