Forum Discussion

lukapril's avatar
lukapril
Occasional Contributor
16 years ago

WCF: How to pass DemarcatingOperation - IsInitiating attribute between requests

Hi,

I'm trying to use soapUI 3.5 Beta 2 to perform 2 requests to my web service, which use soap, WCF. I've enabled WS-A setting in soapUI and was able to send the first request (login) and receive the response correctly. However, the 2nd request (search) failed:


 

    http://schemas.microsoft.com/net/2005/1 ... cher/fault
    uuid:cfb121be-26b7-45c5-a131-092942bfb71d
 

 
   
     
        s:Receiver
       
          a:InternalServiceFault
       

     

     
        The operation 'Search' cannot be the first operation to be called because IsInitiating is false.
     

     
       
         
         
          The operation 'Search' cannot be the first operation to be called because IsInitiating is false.
         
            at Commons.ServiceModel.DemarcatingOperationAttribute.DemarcationValidator.Invoke(Object instance, Object[] inputs, Object[]& outputs)<br />&nbsp; &nbsp;at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)<br />&nbsp; &nbsp;at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)<br />&nbsp; &nbsp;at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)<br />&nbsp; &nbsp;at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)<br />&nbsp; &nbsp;at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)<br />&nbsp; &nbsp;at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)<br />&nbsp; &nbsp;at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
         

          System.InvalidOperationException
       

     

   

 


After I talked to the developer, he said that in the web service, after the login request is sent, the IsInitiating attribute of the WCF demarcation tag is set. This is to ensure that login is always the first request. Here is the WCF Demarcation declaration:

[OperationContract, DemarcatingOperation(IsInitiating = true)]
LoginToAppResponse Login(LoginToAppRequest  LoginRequest);

[OperationContract, DemarcatingOperation(IsInitiating = false)]
SearchAppResponse Search(SearchAppRequest  SearchRequest);

When I executed these 2 requests in a row, the search request didn't 'recognize' the login request, hence giving me an error because it thought that the search request is the first (or standalone) request? I'm wondering does soapUI handles WCF web services with Demarcation setting? Is this something I can configure?

Thanks!
No RepliesBe the first to reply