我们有一个ac#asp.net网络应用程序,除其他外,允许用户下载以前上传的文件,如PDF,Word文档等.asp.net应用程序通过IIS6服务器和文件资源提供服务在另一台服务器上。
当用户请求文件(即单击Web表单上的按钮)时,我们将文件流回其浏览器,并相应地更改ContentType。
这似乎是避免使用IIS虚拟文件夹路由来提供文件资源的好方法 - 由于用户可能会破解URL,我们担心这一点。即使用像https://mydomain/myresource/clientid/myreport.docx这样的网址,一个精明的用户可以很好地猜测替代cvlientid和文档名称。
将Word文档流式传输到浏览器的麻烦在于,当浏览器将其投放到Word时,Word将其视为全新的文档,这意味着原始文档的属性和属性。保证金信息丢失。
我们的用户将元数据信息存储在Word文档属性中,因此他们不接受此解决方案。
通过IIS虚拟文件夹提供服务解决了这个问题,但引入了URL安全问题。
所以我的问题是......
有谁知道我们如何使用IIS虚拟文件夹进行URL加密/解密(或混淆)? 或者有人知道任何做类似工作的开源项目 或者是否有人对如何编写我们自己的虚拟文件夹实现但使用加密URL有任何想法?
非常感谢提前。
PS。我们的网络应用程序通过https
发送答案 0 :(得分:0)
对不起,伙计们,在我的问题中,我做了一些不正确的假设。
我想要做的是,当从服务器(使用Response.TransmitFile或通过虚拟文件夹)将word文档存储在客户端浏览器中时,将其保存在word文档中。
我设置了一个带有IIS虚拟文件夹的测试场景,并在我的虚拟文件夹的物理路径中删除了一个docx文件(我知道它包含标题和主题属性中的信息)。
我将浏览器指向虚拟文件夹别名,浏览器弹出其消息以打开或保存文档。
如果我选择保存它,保存的docx仍然具有完整的属性。
如果我选择先将其打开然后从Word中保存,则保存的docx会丢失属性。
所以我想我需要发一个不同的问题!
答案 1 :(得分:0)
您可能会发现“Windows Identity Foundation”中的ClaimsAuthorizationManager
类可以满足您的需求。您可以实现您喜欢的任何逻辑,以确定谁可以在不使用“目录安全性”的情况下下载内容。