I cannot find what I`m doing wrong.
When I try to call service operation I get error:
The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.
using (Ref.SService_V1_0Client client = new Ref.SService_V1_0Client("RWS"))
{
var request = new Ref.IVISRequestStructure();
request.Header = new Ref.RequestHeaderStructure();
client.ChannelFactory.Credentials.SupportInteractive = false;
ChannelFactoryOperations.ConfigureChannelFactory(client.ChannelFactory);
ChannelFactoryOperations.CreateChannelWithIssuedToken<Ref.ISService_V1_0>(client.ChannelFactory, ((Microsoft.IdentityModel.Claims.ClaimsIdentity)(Page.User.Identity)).BootstrapToken);
client.StartTransaction("string argument");
}
Configuration in web.config:
<system.serviceModel>
<bindings>
<ws2007FederationHttpBinding>
<binding name="ws2007FederationUserName" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" maxReceivedMessageSize="100000000">
<security mode="TransportWithMessageCredential">
<message issuedKeyType="SymmetricKey" negotiateServiceCredential="true">
<issuer address="adress/STS/Issue.svc/trust/13/issuedtokenmixedsymmetricbasic256" binding="customBinding" bindingConfiguration="issuedtokenmixedsymmetricbasic256"/>
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>
<client>
<endpoint address="another_address/servicename.svc/ws2007Federation"
binding="ws2007FederationHttpBinding" bindingConfiguration="ws2007FederationUserName"
contract="Ref.ISService_V1_0" name="RWS" />
</client>
</system.serviceModel>
Try using the return value of the CreateChannelWithIssuedToken call to invoke the service instead of using the client variable. See the CreateChannel code in this sample for how CreateChannelWithIssuedToken is used. It would look like this: