3
Azure에서 WCF 서비스를 프로그래밍 중입니다.계약 작업 수행 중 콜백 호출
내 서비스에서 계약 작업을 실행하는 동안 콜백을 호출해야합니다. 그렇게하려고하면 예외가 발생하고 클라이언트가 잠 깁니다. 나는 채널이 계약 작업을 위해 열렸 기 때문에 현재 채널에서 콜백 호출이 스레드를 잠글 것이라고 생각합니다. 맞습니까? 나는이 시나리오에 대한 해결책을 원한다. 이 요청 작업이 net.tcp로 전송
: 여기
는 시간 제한 예외 메시지입니다 //127.255.0.0가 : 8000/MytestWCFService가 구성된 제한 시간 내에 응답 을받지 않았다 (0시 : 59.9889989). 이 작업에 할당 된 의 시간이 더 길어질 수 있습니다. 이 은 서비스가 여전히 작업을 처리 중이거나 이므로 서비스가 회신 메시지를 보낼 수 없었기 때문일 수 있습니다. 채널/프록시를 IContextChannel로 캐스팅하고 OperationTimeout 속성을 설정하여 작업 시간 초과를 늘리고 서비스가 클라이언트에 연결할 수 있는지 확인하십시오. 편집
: 코드 샘플
[ServiceContract(Namespace="testnamespace")]
public interface ICallback
{
[OperationContract(IsOneWay=true)]
void Callbackmethod();
}
는 그럼 난 서비스 측면에서 IContract를 구현 :
난 다시 현재 채널에서 호출 오전[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single,
ConcurrencyMode=ConcurrencyMode.Reentrant,
AddressFilterMode=AddressFilterMode.Any)]
public class WCFService : IContract
{
public int Add(int a, int b)
{
int result = a + b;
ICallback callback = OperationContext.Current.GetCallbackChannel<ICallback>();
callback.Callbackmethod();
return result;
}
}
, 그것은 이중 채널입니다.
안녕 라디, 나는 그것을 시도했다. 또한이 링크에서 세 가지 솔루션을 시도했습니다. http://msdn.microsoft.com/en-us/magazine/cc163537.aspx#S4 그러나 그것은 나를 위해 작동하지 않는 것 같습니다. 내 시나리오는 서비스 계약 메소드를 다시 호출하면 교착 상태가 발생한다는 것입니다. 내 편집을보고 코드 샘플을 검토하십시오. –
클라이언트 응용 프로그램이 무엇입니까? –
내 클라이언트 응용 프로그램은 WPF 응용 프로그램으로 아무것도하지 않습니다. 이 같은. 공용 부분 클래스 MainWindow : Window, ICallback {public void Callbackmethod() {}; } –