我有一个Silverlight应用程序。它适用于用户DefaultAppPool。哪个获得了服务器的所有权利。 (写/修改/删除等..)
如果我在本地运行它,则可以使用Directory.CreateDirectory和Directory.DeleteDirectory创建和删除目录。
但是,如果我将silverlight应用程序放在网上,则可以写入,但无法删除。
有没有办法检查问题是什么,为什么不删除?有没有人有什么建议可以尝试?
(我也尝试了以下内容:
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(App.Serverpath);
dir.Delete(true);
我检查了Serverpath,它是正确的!)
答案 0 :(得分:0)
是。默认情况下,Silverlight是沙盒运行时环境。默认情况下,它不允许您删除运行应用程序的计算机上的文件。但是,您可以通过将其切换到Elevated Trust模式来执行此操作。基本上有两种方法可以做到这一点。在浏览器中,以及浏览器外(OOB)。浏览器更简单,但用户将需要安装该应用程序。无论哪种方式,您都需要购买代码签名证书并签署Xap包。
对于浏览器应用程序,需要在注册表级别明确配置客户端计算机,以提高对浏览器的信任。如果客户端将应用程序安装为OOB应用程序,则无需执行此操作。
有许多关于设置提升信任的文章,但这里有一篇: Enabling In-browser elevated trust
注意:我对你使用" Server"这个词感到有点困惑。这里。 Silverlight,一般来说是客户端技术。您将无法直接删除服务器上的文件。如果您需要删除服务器端的文件,则需要在服务器端构建某种服务(例如WCF或REST),并在客户端从Silverlight调用服务。这可能更容易,因为如果您真的需要删除服务器上的文件,您将只能在服务器上运行Sivlerlight应用程序,这看起来并不正确。