是否可以在SQL Server中存储Clickonce应用程序文件?

时间:2012-09-17 10:22:37

标签: c# asp.net clickonce

我正在使用ASP.net Web应用程序中的ClockOnce发布Windows表单应用程序。据我所知,当用户点击发布按钮时,将下载clickonce应用程序。此选项不安全,因为知道下载URL的任何人都可以下载。添加身份验证我正在使用httphandler,根据David P Henry来自codeproject的建议一切正常。我想为此方法添加更多安全性,而不是将clickOnce应用程序文件放在Web应用程序的Application Files文件夹中我想将这些文件放在SQL Server中。所以我的应用程序应该能够从SQL Server下载这些文件并将其发送给用户。

Clockonce有可能吗?

如果可能,我想知道这种方法。

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。使用VirtualPathProvider从SQL而不是文件系统读取文件。

当ClickOnce通过http / https请求文件时,可以拦截每个请求并传递您自己的版本(在这种情况下,从SQL而不是服务器的文件系统读取)。

下面的链接是一个简单的项目,展示了如何使用自定义VirtualPathProvider。

http://www.codeproject.com/Articles/16848/Creating-Custom-Virtual-Path-Provider-in-ASP-Net-2

我建议将存储文件的目录转换为应用程序,并将Global.asax添加到应用程序的根目录。

然后为根目录添加* .deploy和* .manifest的处理程序映射,以便在请求每个文件时运行VirtualPathProvider。

在重写的FileExists方法中(在VirtualPathProvider中)写一些逻辑,如果文件存在与否则返回。你可以在这里提出一些授权,但我不知道ClickOnce是否会缓存Http响应,因为如果此函数返回false,服务器将返回404。

在VirtualFile中的Stream Open()内,返回从SQL服务器读取的MemoryStream。

希望这有帮助。