【发布时间】:2014-06-25 11:33:55
【问题描述】:
我是 WCF 新手,我在 IIS 7 / Windows 2008 服务器上的托管 wcf 服务(.net 框架 4.0)中遇到了与并发相关的问题。谷歌搜索后我做了所有的可能性,但仍然无法解决我的问题。我创建了库存服务,它使用实体框架从 SQL Server 表中获取数据,如ItemHeadMaster、ItemMaster 等。
我在自定义用户搜索控件中引用了此 WCF 以进行搜索。当 2 个并发用户点击放置在 ASP.Net 页面上的搜索控件时,一切运行良好。
我的代码如下所示:
namespace HIS.STORESERVICES
{
[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Multiple)]
public class StoreMasterData : IStoreMasterData
{
public string GetAllItemHead(string strHospitalId)
{
using (DAL.ItemHeadMaster objItemHeadMasterDAL = new DAL.ItemHeadMaster())
{
List<STORE.MODEL.ItemHeadMaster> objItemHeamMasterList = new List<STORE.MODEL.ItemHeadMaster>();
objItemHeamMasterList = objItemHeadMasterDAL.GetAllItemHead(strHospitalId);
XmlSerializer Xml_Serializer = new XmlSerializer(objItemHeamMasterList.GetType());
StringWriter Writer = new StringWriter();
Xml_Serializer.Serialize(Writer, objItemHeamMasterList);
return Writer.ToString();
}
}
}
我在谷歌搜索后做了以下操作:
-
在配置中添加但没有效果
<system.net> <connectionManagement> <add address="*" maxconnection="100" /> </connectionManagement> </system.net>` -
在配置中添加但没有效果反而变得更慢..
<behaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="True" /> <serviceThrottling maxConcurrentCalls="32" maxConcurrentInstances="2147483647" maxConcurrentSessions="20"/>
请帮忙
【问题讨论】:
-
您遇到了什么问题?性能或运行时错误?
-
性能问题,页面几乎挂起。
-
您到底为什么要手动 XML 序列化您的数据? WCF 会自动为您执行此操作。所以基本上你首先是 XML 序列化它,然后 WCF 再做一次......只需返回一个
List<Something>并让 WCF 完成工作! -
marc_s,感谢您的快速回复,我正在从代码中删除这些 xml 序列化,并将再次检查性能。
-
感谢 marc_s,在删除手动序列化后它执行得很快,但现在开始出现新问题,当我第一次调用该服务时,当我从客户端访问时它工作正常......但后来在 2 或 3 次点击后,它给了我超时异常请建议
标签: wcf