2010-02-25 102 views
4

我们有ac#asp.net web应用程序,其中包括允许用户下载以前上传的文件,如PDF,Word文档等。该asp.net应用程序通过IIS6服务器并且文件资源位于不同的服务器上。IIS虚拟文件夹URL加密

当用户请求文件(即单击Web表单上的按钮)时,我们将文件传输回其浏览器,并适当更改ContentType。

这似乎是一种避免让IIS虚拟文件夹路由来提供文件资源的好方法 - 由于用户有可能破解URL,我们担心这些问题。即具有诸如https://mydomain/myresource/clientid/myreport.docx的URL,精明的用户可以在猜测替代cvlientid和文档名称时具有良好的刺激。

将Word文档传输到浏览器的麻烦在于,当浏览器在Word中引发Word时,Word会将其视为一个全新的文档,这意味着原始文档的属性&保证金信息丢失。

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

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

所以我的问题是...

有谁知道我们如何使用URL加密/解密(或混淆)与IIS虚拟文件夹?
还是有人知道任何开展类似工作的开源项目。
还是没有人有任何关于如何去编写我们自己的虚拟文件夹的实现,但加密的URL?

非常感谢提前。

ps。我们的网络应用程序通过https发送

+0

您可否详细说明“Word将它视为全新的文档,这意味着原始文档的属性和保证金信息会丢失”?我们通过身份验证的httphandler进行流式处理,并且没有任何问题,弹出一个框来保存文件,这是您正在做什么? – 2010-02-25 12:35:28

+0

是的,弹出框打开或保存文件。如果客户端保存它,服务器版本(标题,主题,标签等)上存在的任何属性都不存在于客户端副本上。 – 2010-02-25 12:53:03

+0

嗯,只是做了与虚拟文件夹的另一个测试,当我说“通过IIS虚拟文件夹服务解决了这个问题”,看起来像我犯了一个错误。 也许我的问题是:“如何通过客户端浏览器传递Word保存的docx文件的元数据属性(如标题,主题) – 2010-02-25 13:00:42

回答

0

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

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

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

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

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

如果我选择打开它的拳头,然后从Word保存它,保存的docx已经失去了属性。

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

0

您可能会发现“Windows Identity Foundation”中的ClaimsAuthorizationManager类可以实现您想要的功能。你可以实现你喜欢的任何逻辑来确定谁可以下载而不使用“目录安全性”。