MSMQ를 통해 실행되는 WCF 서비스에 대한 트랜잭션 시간 제한을 동적으로 설정할 수 있어야한다는 요구 사항이 있습니다. MSDN의 예제를 따르고 있습니다 : http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.channeldispatcher.transactiontimeout.aspx. 그러나 설정중인 시간 초과가 작동하지 않는 것 같습니다.어떻게 동적으로 WCF 서비스에 대한 TransactionTimeout을 설정할 수 있습니까?
나는 TransactionTimeout 속성을 설정하는 데 사용하고 코드는 다음과 같습니다: 내 서비스를 실행하고 내 서비스 구현에서 2 분 지연을 넣을 때
ServiceProperties properties = ...; // has a TransactionTimeout value for the service
var serviceHost = new ServiceHost(...);
serviceHost.Open();
var channelDispatchers =
serviceHost.ChannelDispatchers.Select(
cd => new ChannelDispatcher(cd.Listener)).ToArray();
foreach (var channelDispatcher in channelDispatchers)
{
channelDispatcher.TransactionTimeout = properties.TransactionTimeout;
}
, 나는이 트랜잭션 참여 오류가 발생
예외 : 나는 다른 MSMQ 대기열에 쓰려고하면 큐에 보내는 동안 오류가 발생했습니다 : 지정된 트랜잭션이 입대 할 수 없습니다. (-1072824232, 0xc00e0058). MSMQ가 설치되어 실행되고 있는지 확인하십시오. 로컬 대기열로 보내는 경우, 대기열에 필요한 액세스 모드 및 권한이 있는지 확인하십시오.
누구든지 이전에이 기능을 사용할 수 있었습니까? 어떤 아이디어라도 대단히 감사하겠습니다.
미리 감사드립니다.
먼저 생각 :이 작업을 수행하는 올바른 방법은 찾아 서비스 설명에 부착 된 ServiceBehaviorAttribute 개체를 수정하는 것입니다 MSMQ 및 MS DTC 서비스가 참여하는 모든 시스템에서 실행되고 있는지 확인을; 또한 서비스가 실행중인 사용자에게 필요한 읽기/쓰기 권한이있는 대기열의 액세스 권한을 확인하십시오. –
모든 것이 로컬에서 실행 중입니다. 권한이 맞습니다. –