2012-09-17 42 views
0

我正在發佈在Windows應用程序中使用ClockOnce的Windows窗體應用程序。我明白,當用戶點擊發布按鈕時,clickonce應用程序將被下載。這個選項是不安全的,因爲知道下載URL的任何人都可以下載。添加身份驗證我正在使用httphandler按照大衛P亨利codeproject建議一切工作正常。我想爲此方法添加更多安全性,而不是將clickOnce應用程序文件放置在Web應用程序的Application Files文件夾中我想將這些文件放在SQL Server中。所以我的應用程序應該能夠從SQL Server下載這些文件並將其發送給用戶。是否可以在SQL Server中存儲Clickonce應用程序文件?

在Clockonce中可能嗎?

如果可能我想知道這種方法。

回答

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 Server讀取的MemoryStream。

希望這會有所幫助。

+0

感謝您的及時響應。我會更新一次,我嘗試thsi選項。 –

相關問題