WebService 中的静态哈希表

Posted

技术标签:

【中文标题】WebService 中的静态哈希表【英文标题】:Static Hashtable in WebService 【发布时间】:2013-03-07 23:09:11 【问题描述】:

我开发了一个简单的 XML Web 服务,它使用静态哈希表来存储数据库中的两列表。 哈希表最初在第一次调用 Web 服务时加载了值。 Web 服务在 Visual Studio IDE 中运行良好。

在 IIS(7.0 版)中部署时,会引发空指针异常。 错误消息指向从哈希表中获取对值的函数。

我的问题是: 1) 是否可以在 Web 服务的整个生命周期中将静态哈希表存储在 Web 服务中。 2)在访问哈希表之前是否应该每次检查哈希表是否为空? 3) 使用静态哈希表的最佳方式是什么?

【问题讨论】:

【参考方案1】:

这里最可能的问题是,在生产环境中,您的 Web 服务正在处理多个同时调用。这些调用显示为单独的线程,它们以不安全的方式访问单个 HashTable。这些不安全的访问导致HashTable 的内部数据被破坏,从而导致NullReferenceException

您需要使用锁来保护对此HashTable 的访问,以便从 Web 服务中的静态字段安全地访问它

【讨论】:

感谢您的回复。请指导我如何锁定哈希表。

以上是关于WebService 中的静态哈希表的主要内容,如果未能解决你的问题,请参考以下文章

CXF 简单创建Webserver 例子

哈希表的静态,动态,以及key/value形式

FineReport中以jws方式调用WebService数据源方案

WebServic调用天气预报服务

如何在调用WebService方法时,传递对象数组参数

关于在VS2010中调用Webservic遇到的异常