gpt4 book ai didi

web-services - WCF服务不遵守超时配置

转载 作者:行者123 更新时间:2023-12-04 05:12:18 32 4
gpt4 key购买 nike

我正在尝试测试WCF服务中的超时配置。我希望服务根据配置或代码中的设置使请求超时。 WCF客户端(即示例Web应用程序)具有与预期相似的配置超时,但是我希望服务本身遵守设置和超时。

以几种方式对此进行了测试。

1.)IIS托管的WCF服务,其超时在web.config中列出

<bindings>
<basicHttpBinding>
<binding name="Service1Binding" closeTimeout="00:00:10" openTimeout="00:00:10" receiveTimeout="00:00:10" sendTimeout="00:00:10">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="Service1">
<endpoint address="Service1" binding="basicHttpBinding" bindingConfiguration="Service1Binding" name="IService1" contract="TestWcfTimeout.IService1" />
</service>
</services>


2.)代码中列出了超时的自托管WCF服务

            using (var host = new ServiceHost(typeof(Service1), baseAddress))
{
var smb = new ServiceMetadataBehavior{ HttpGetEnabled = true, MetadataExporter = { PolicyVersion = PolicyVersion.Policy15 }};

var endpoint = host.AddServiceEndpoint(typeof(IService1), new BasicHttpBinding(), baseAddress);
endpoint.Binding.OpenTimeout = new TimeSpan(00, 00, 00, 10);
endpoint.Binding.CloseTimeout = new TimeSpan(00, 00, 00, 10);
endpoint.Binding.SendTimeout = new TimeSpan(00, 00, 00, 10);
endpoint.Binding.ReceiveTimeout = new TimeSpan(00, 00, 00, 10);
host.Description.Behaviors.Add(smb);
host.Open();

Console.WriteLine("The service is ready at {0}", baseAddress);
Console.WriteLine("Press <Enter> to stop the service.");
Console.ReadLine();

host.Close();
}

[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
}


使用SoapUI客户端对此进行了测试。确保方法GetData完成配置要花费比配置的超时更多的时间。因此服务可以使请求超时。

->但是,该服务不接受超时,即使达到超时设置,客户端仍会收到wcf响应对象。任何想法?

在Web应用程序上注意到了类似的行为,其中,即使达到配置时间,服务也不会超时。

->任何反馈表示赞赏

最佳答案

您的web.config超时是指客户端的操作。您正在做的是设置Web服务对客户的态度。

根据您的配置,这意味着如果您的客户端在例如对Web服务的两个请求,您的客户端将收到超时异常,因为您的Web服务将显示“嘿!您超出了我的web.config中的超时。您来晚了,我将不回答!”。

在客户端的配置中设置相同的超时时间,然后重复您的实验,从而延迟GetData的响应:客户端将抛出异常并丢弃Web服务的响应。

现在,如果您正在寻找一种设置超时服务端的方法,以使服务在超过时间限制时停止处理请求... you will have to implement it yourself

关于web-services - WCF服务不遵守超时配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46812039/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com