how to consume WCF service from SSIS? - wcf

anyone have any idea what is the proper approach to call WCF service from SSIS? It is ok if i use WCFTestClient. But if using SSIS following some online tutorials i encounter the following errors: can anyone advise?
Error: 0x1 at Script Task:
System.Reflection.TargetInvocationException: Exception has been thrown
by the target of an invocation. --->
System.ServiceModel.Security.SecurityNegotiationException: Secure
channel cannot be opened because security negotiation with the remote
endpoint has failed. This may be due to absent or incorrectly
specified EndpointIdentity in the EndpointAddress used to create the
channel. Please verify the EndpointIdentity specified or implied by
the EndpointAddress correctly identifies the remote endpoint. --->
System.ServiceModel.FaultException: The message with Action
'http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue' cannot be
processed at the receiver, due to a ContractFilter mismatch at the
EndpointDispatcher. This may be because of either a contract mismatch
(mismatched Actions between sender and receiver) or a binding/security
mismatch between the sender and the receiver. Check that sender and
receiver have the same contract and the same binding (including
security requirements, e.g. Message, Transport, None). at
System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault(Message
message, EndpointAddress target) at
System.ServiceModel.Security.IssuanceTokenProviderBase`1.ThrowIfFault(Message
message, EndpointAddress target) at
System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody(Message
incomingMessage, SspiNegotiationTokenProviderState sspiState) --- End
of inner exception stack trace ---

Related

How to call a WCF SOAP web service using Postman

I'm following these instructions from the Postman blog to call a WCF (SOAP) web service using Postman:
Postman makes SOAP requests too
I keep getting this error message back:
The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).
There is no security on this particular service prototype and when I examine the WCF service logs I see this message in red:
Process action''.
Any idea how to get around this problem and map a SOAP Action in the request?
I found a workaround by specifying a request header with a SOAPAction key and value of: http://tempuri.org/I<My Service Name>/<Method Name>
Hope this helps!
If you have called your service in SaopUI client, then you can get the correct SOAPAction header value there under the Raw tab in the request window in SoapUI.

How do I get the correct schemaLocation into my WCF service's WSDL?

I have written a simple WCF web service that I am trying to expose through a website.
I uploaded the website (which has the service reference and bindings in the web.config) to the server and I can browse to the wsdl using https://domain/ServiceRoute?wsdl.
The WSDL is showing an incorrect path for schemaLocation.
I then try to use the WCF Test Client to test the service. The WCF Test Client gives me the following error:
Error: Cannot obtain Metadata from https://domain/ServiceRoute?wsdl If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: https://domain/ServiceRoute?wsdl Metadata contains a reference that cannot be resolved: 'https://domain/ServiceRoute?wsdl'. Sendera:ActionNotSupportedThe message with Action 'http://schemas.xmlsoap.org/ws/2004/09/transfer/Get' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).HTTP GET Error URI: https://domain/ServiceRoute?wsdl The document was understood, but it could not be processed. - The WSDL document contains links that could not be resolved. - There was an error downloading 'https://incorrectSchemaLocation/ServiceRoute?xsd=xsd0'. - The remote name could not be resolved: 'IncorrectSchemaLocation'
I'm not sure what to do about this. Is there a server setting I need to change? Or can I update my bindings to explicitly use the schemaLocation of https://domain/ServiceRoute?
Also, note that I am not getting ssl certificate errors when I browse to the wsdl. I don't know if that helps.
I was able to get around this error by changing the web server's configuration using a command line utility:
cscript.exe adsutil.vbs set /w3svc/<site identifier>/SecureBindings ":443:<host header>"
Where <site identifier> is the IIS site identifier and <host header> is the URL that will be used to access the service from the outside (ie: subdomain.domain.com.)

SecurityNegotiationException: A Call to SSPI Failed

I have a WCF webservice using a NetTcpBinding with Transport security and the clientCredientialType set to none. I have no identity specified on the endpoint using this binding. Every attempt made to call a method on the service results in the following error:
Client side:
System.ServiceModel.Security.SecurityNegotiationException: A call to
SSPI failed, see inner exception.
Service side:
System.ServiceModel.Security.SecurityNegotiationException:
Authentication failed on the remote side (the stream might still be
available for additional authentication attempts).
System.ComponentModel.Win32Exception: The target principal name is
incorrect
Any help with this is appreciated
Thanks
Sj

WCF client returns error "The remote server returned an error: NotFound."

I am migrating a WPF application to Silverlight. My WPF application accesses a Web Service using BackgroundWorker. If there is any error while accessing the web service I get an extensive error message in my callback, for example
There was no endpoint listening at http://localhost:8080/services/registration
that could accept the message. This is often caused by an incorrect address or
SOAP action. See InnerException, if present, for more details.
In my Silverlight application, I am accessing the same web service asynchronously and now my error messages are not very useful, for example:
The remote server returned an error: NotFound.
The web service has not changed - I can see the faults coming from the server on Fiddler. So the question is how can I get more detailed error messages on the Silverlight client.
My callback in Silverlight application looks like this (I am accessing the error message from e.Error.Message):
private void AuthenticateUserCallback(object sender, AuthenticateUserCompletedEventArgs e)
{
if (e.Error != null)
{
this.StatusMessage = e.Error.Message;
}
...
}
This is limitation with Browser stack due to which SL cannot access the complete exception message. Look at MSDN article here
The approach is to wrap exception into meaningful faults (which means client will always get HTTP OK 200) and perform custom exception handling on the client side.

call WCF Service from SSL Enabled website

how can i call service from a ssl enabled website to a WCF service with basicHTTPBinding.
i am getting the error
The requested service, 'http://10.5.1.111/HRMSService/VehicleMaintenance/VehicleMaintenance.svc/test' could not be activated. See the server's diagnostic trace logs for more information.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ServiceModel.ServiceActivationException: The requested service, 'http://10.5.1.111/HRMSService/VehicleMaintenance/VehicleMaintenance.svc/test' could not be activated. See the server's diagnostic trace logs for more information.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using
Have you defined the correct bindings in Web.config?