在 IIS 服务器上使用独立存储

Posted

技术标签:

【中文标题】在 IIS 服务器上使用独立存储【英文标题】:Using IsolatedStorage on a IIS server 【发布时间】:2010-05-28 15:15:17 【问题描述】:

我对在 IIS 服务器上使用 Isolated Storage 有点困惑。

我了解隔离存储的目标:提供一个安全的地方来存储数据,而不必担心这个地方的位置和位置。

由于独立存储有按用户和按程序集的方法,我不太愿意在应用程序几乎有自己身份的 IIS 服务器上使用它。 我还没有真正看到模拟 Web 应用程序的兴趣,我自己也几乎从未见过模拟 Web 应用程序,但这是我的观点。

在服务器上使用隔离存储意味着(对于 Windows Server 2003):

\Documents and Settings\<user>\中使用独立存储

当应用程序池由 Local SystemNetwork Services 我猜拥有时,这意味着 \Documents and Settings\Default User\

这也意味着 本地系统网络服务

对该文件夹的 写入 权限

使用假冒

关于 Web 应用程序(逻辑),这些想法让我感到困惑……文档和设置?默认用户?仅为存储启用模拟?无法控制服务器上的存储?呃?

MSDN 上的一些观点:

服务器存储。服务器应用程序可以使用隔离存储来提供单独的存储 [...]。由于隔离存储始终由用户隔离,因此服务器必须模拟发出请求的用户。 [...]

使用隔离存储使部分受信任的应用程序能够以计算机安全策略控制的方式存储数据。

默认情况下,从本地计算机、本地网络、[...] 运行的代码被授予使用隔离存储的权利。我应该了解网络服务吗?我会感到惊讶。在我的 IIS 服务器 (Windows 2003) 上不是这种情况。

然后我陷入困境:在 Web 应用程序上使用 System.IO.Packaging(内部带有独立存储)还是找到替代方案?使用IO.Packaging 意味着您必须启用隔离存储?

我的方法错了吗?我错过了什么吗?

我确实不想在 IIS 服务器上使用/启用它,我想了解在这样的环境中启用它是否是一个好习惯。

任何观点都值得赞赏,关于“具有 IIS 理念的隔离存储”的解释可能是一个答案。

谢谢!

【问题讨论】:

我不明白。隔离存储用于客户端上不受信任的应用程序。 (例如 Silverlight 小程序。)如果您托管的是 Web 应用程序,那么它是受信任的,那么为什么要使用隔离存储? 感谢您的评论,但这不是我在 MSDN 上所理解的。他们说您可以将它用于部分受信任的应用程序,但他们也唤起了服务器场景。我将进行编辑以添加这些点。 【参考方案1】:

如果您出于某种原因需要使用服务器端隔离存储,那么您必须模拟用户,并且为此您需要使用 Windows 集成身份验证,以便获得由请求用户填充的 http 上下文的用户主体。 请求线程会将身份切换为请求者用户,我假设(尚未测试)您会看到该帐户下的隔离存储。

我仍然不确定何时将服务器端的隔离存储用于通常在企业环境中在网络场上运行的 IIS 应用程序。 每个用户在本地存储任何东西都是违反最佳实践的。 如果该服务器出现故障,那么您就丢失了该数据。

【讨论】:

我得出了和你一样的结论。即使我没有测试过,在最新的实现中,同样的行为似乎也是如此(更有可能是这样)。我会接受这个答案,因为问题是针对隔离存储的 CLR 2 逻辑的。

以上是关于在 IIS 服务器上使用独立存储的主要内容,如果未能解决你的问题,请参考以下文章

IIS 慢速多线程

利用iis虚拟目录实现文件服务器功能(分布式存储)

IIS 6 上的 ASP.NET 路由

发布网站遇到的问题笔记

如何将c#做好的asp.net网站部署到iis上

如何在 IIS 上生成负载?