我正在使用WCF不断将图像从服务器传输到客户端。然而,每当我尝试运行它,我总是得到这个错误:位于“地址”的HTTP服务太忙
The HTTP service located at "local host address here" is too busy.
我在网上无处不在,并尝试其他解决方案。我已经尝试调节,增加缓冲区大小,并改变传输模式无济于事。我对WCF很陌生,不知道要去哪里。如果有人有任何想法如何摆脱这个错误,我将不胜感激。谢谢!这是我所有的代码。
的app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_VisionWcfInterface" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Streamed"
useDefaultWebProxy="true">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceThrottling maxConcurrentCalls="16" maxConcurrentInstances="2147483647" maxConcurrentSessions="10"/>
</behavior>
</serviceBehaviors>
</behaviors>
<client>
<endpoint address="http://localhost:8002/Visual/service" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_VisionWcfInterface"
contract="VisionWcfInterface" name="BasicHttpBinding_VisionWcfInterface" />
</client>
</system.serviceModel>
</configuration>
Client.cs文件和ClientWCF功能:
public Form1()
{
private VisionWcfClient client = new VisionWcfClient();
client.Connect();
pictureBox2.Image = ConvertByteArrayToImage(client.GetVideoStream());
}
public byte[] GetVideoStream()
{
return m_clientProxy.GetVideoStream();
}
Server.cs文件和ServerWCF功能:
public byte[] GetVideoStream()
{
return GetVideoStreamEvent();
}
byte[] ads_GetVideoStreamEvent()
{
IntPtr pointer;
m_Buffers.GetAddress(out pointer);
Bitmap b = new Bitmap(m_Buffers.Width, m_Buffers.Height, m_Buffers.Pitch, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, pointer);
System.Drawing.Imaging.ColorPalette palette = b.Palette;
Color[] entries = palette.Entries;
for (int i = 0; i < 256; i++)
entries[i] = Color.FromArgb(255, i, i, i);
b.Palette = palette;
m_Buffers.ReleaseAddress(pointer);
using (MemoryStream ms = new MemoryStream())
{
b.Save(ms, ImageFormat.Bmp);
return ms.ToArray();
}
}
最终我会,但我现在至少想要得到一张图片。如果我这样做,最终会遇到问题吗? – 2012-08-10 21:32:03
不,我刚才注意到你的描述和代码之间的不一致,并且认为你可能有太多的并发连接。你将不得不改变配置,以允许你想要的同时连接的数量(我忘记了多少默认值),但这不应该是你的问题。 – ExcaliburVT 2012-08-10 21:35:28
这是一个非常愚蠢的问题,但就像我之前提到的,我是新的。那么服务标题是什么意思? – 2012-08-10 21:49:13