我有一个奇怪的情况,我希望有人经历过这种情况,并且可以帮助我。
我在IIS上托管了WCF服务。 从一个客户端(Windows XP专业版SP3),一个简单的调用只需不到一秒钟,但从另一个客户端(也赢得xp pro sp3,但必须以某种方式与另一个配置),在应用程序中进行第一次调用需要7秒
我在应用中做的是实现服务,并进行简单的通话。 我试过做诊断。 当我查看客户端服务日志时,我可以看到通道的构造大约需要2秒钟。 Open Client base大约需要2秒钟,并且在服务中运行该方法大约需要2秒钟。
然后我关闭了服务。
如果我再次拨打电话,则需要0秒,就像在另一台机器上一样。 如果我关闭应用程序,第一次运行需要7秒钟。
从缓慢的PC调用到同一IIS上的ASMX服务总是运行得很快,但我想使用WCF。
我使用基本的IIS身份验证,我使用下面的代码添加凭据运行时。但我在两台PC上做同样的事情,所以......我必须以某种方式进行配置。
MyServiceClient client = new MyServiceClient();
ClientCredentials loginCredentials = new ClientCredentials();
loginCredentials.UserName.UserName = "theuser";
loginCredentials.UserName.Password = "thepass";
var defaultCredentials = client.Endpoint.Behaviors.Find<ClientCredentials>();
client.Endpoint.Behaviors.Remove(defaultCredentials); //remove default ones
client.Endpoint.Behaviors.Add(loginCredentials); //add required ones
client.Endpoint.Address = new System.ServiceModel.EndpointAddress(GetSVCUrl());
client.InnerChannel.OperationTimeout = new TimeSpan(0, 0, 60);
client.Endpoint.Binding.OpenTimeout = new TimeSpan(0, 0, 60);
配置设置为
<security mode="TransportCredentialsOnly">
<transport clientCredentialType="Basic" realm="" />
</security>
我在这个问题上搜索了很多内容,并尝试了与代理等相关的不同配置设置,但没有任何真正的突破。
我希望有人能给我一个正确方向的暗示。
谢谢!
丹麦莫滕