Ниже служба размещается в IIS с кодом службы WSHTTPBinding
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single, AddressFilterMode = AddressFilterMode.Any)]
public class Service1 : IService1
{}
[OperationBehavior(TransactionScopeRequired = true)]
public File_Data CopyFile(File_Data oFileData)
{}
Служба вызовов
_binding = new WSHttpBinding();
_binding.SendTimeout = new TimeSpan(0, 30, 0);
_binding.ReceiveTimeout = new TimeSpan(0, 30, 0);
_binding.OpenTimeout = new TimeSpan(0, 30, 0);
_binding.CloseTimeout = new TimeSpan(0, 30, 0);
_binding.MaxBufferPoolSize = Int32.MaxValue;
_binding.MaxReceivedMessageSize = Int32.MaxValue;
_binding.ReaderQuotas.MaxDepth = Int32.MaxValue;
_binding.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
_binding.ReaderQuotas.MaxArrayLength = Int32.MaxValue;
_binding.ReaderQuotas.MaxBytesPerRead = Int32.MaxValue;
_binding.ReaderQuotas.MaxNameTableCharCount = Int32.MaxValue;
_binding.Security.Mode = SecurityMode.None;
_binding.TransactionFlow = true;
//_binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
_endpoint = new EndpointAddress(VirtualDir+ "\\" + "Service1.svc");
public File_Data Copy_File(File_Data objFile_Data)
{
ChannelFactory<IService1> Channel = null;
try
{
Channel = new ChannelFactory<IService1>(_binding, _endpoint);
IService1 proxy = Channel.CreateChannel();
objFile_Data = proxy.CopyFile(objFile_Data);
}
catch (Exception ex)
{
msgError = ex.Message;
}
finally
{
if (Channel != null)
{
Channel.Close();
Channel.Abort();
}
Channel = null;`
}
return objFile_Data;
}
Когда служба вызывается из нескольких клиентов, требуется время для завершения операции, как яможно настроить поведение службы для повышения производительности службы