Я создал веб-сервис.После определенного периода времени я в итоге получаю следующую ошибку: "Операция открытия не завершена в течение заданного времени ожидания 00:01:00. Время, отведенное для этой операции, могло быть частьюболее длительный тайм-аут. "
Я не уверен, почему я получаю эту ошибку, так как я установил тайм-аут открытия примерно на 2 часа.Я новичок в веб-сервисах WCF и веб-сервисах в целом.Есть ли какие-либо красные флаги с конфигурацией, которую я показал ниже?
.NET версия: 4.0
Конфигурация на стороне клиента:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="SecurityServiceDev" receiveTimeout="02:00:00" openTimeout="02:00:00" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxConnections="1000" maxBufferSize="2147483647">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
<diagnostics>
<messageLogging logEntireMessage="true" maxMessagesToLog="300" logMessagesAtServiceLevel="true" logMalformedMessages="true" logMessagesAtTransportLevel="true" />
</diagnostics>
<client>
<endpoint address="net.tcp://XXX.svc" binding="netTcpBinding" bindingConfiguration="SecurityServiceDev" contract="SecurityProxy.ISecurityService" name="SecurityService" />
</client>
Конфигурация веб-службы:
<system.serviceModel>
<services>
<service name="TMS.DAL.Common.Security.BAL.SecurityService" behaviorConfiguration="DataServiceBehavior">
<endpoint address="net.tcp://XXX.svc"
name="SecurityService"
binding="netTcpBinding"
bindingConfiguration="Binding"
contract="TMS.DAL.Common.Security.BAL.ISecurityService"/>
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="Binding"
receiveTimeout="02:00:00"
openTimeout="02:00:00"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
maxConnections="1000"
maxBufferSize="2147483647">
<security mode="Transport">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</netTcpBinding>
</bindings>
<client/>
<behaviors>
<serviceBehaviors>
<behavior name="DataServiceBehavior" >
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceMetadata httpGetEnabled="true" />
<dataContractSerializer maxItemsInObjectGraph="61200000" />
<serviceThrottling maxConcurrentCalls="1000"
maxConcurrentInstances="2147483647" maxConcurrentSessions="1000"/>
</behavior>
</serviceBehaviors>
</behaviors>
Единственная конфигурация внутри кода следующая:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class SecurityService : ISecurityService
Договор на обслуживание:
[ServiceContract]
public interface ISecurityService
{
[OperationContract]
bool IsUserInRole(String userName, String roleName);
[OperationContract]
bool DoesUserHavePermission(String userName, String permissionName);
[OperationContract]
List<String> GetUsersInRole(String roleName);
[OperationContract]
List<String> GetRolesForUser(String userName);
[OperationContract]
List<String> GetPermissionsForUser(String userName);
[OperationContract]
List<String> GetPermissionsForRole(String roleName);
[OperationContract]
List<String> GetRolesForApplication(String appName);
[OperationContract(Name = "GetListValuesForRoleAndList")]
List<String> GetListValues(String roleName, String listNames);
[OperationContract(Name = "GetListValuesForRolesAndList")]
List<String> GetListValues(List<String> roleNames, List<String> listNames);
[OperationContract(Name = "GetListValuesForAppUserList")]
List<String> GetListValues(String appName, String userName, List<String> listNames);
[OperationContract]
List<String> GetListsForUser(String userName);
[OperationContract]
bool RoleExists(String roleName);
[OperationContract]
bool ExternalUserExists(String userName, String password);