C# .net integration getting error Failed to create session
I follow the instruction in this tutorial:
https://solace.com/samples/solace-samples-dotnet/publish-subscribe/
Getting error (SOLCLIENT_FAIL - Failed to create session) when create session and connect
how to reproduce:
- Create Solace Cloud free plan
- Pub/Sub using Secured SMF URI with (host, vpn, username, password)
Please help
Thanks
Comments
-
Hi @dndoanh
I believe the tutorial didn't include that we need to have a trust store to connect to secured ports. I'm guessing the error is because of something like this: failed to load trust store: unspecified property 'SESSION_SSL_TRUST_STORE_DIR'
probably something like this:If you don't need secured SMF, you can enable plain text ports during the creation of the Solace Cloud brokers like below:
0 -
@arih thanks for your support
plain text ports working as you said
secured SMF Host still not working as getting error as bellowSSL error: 'wrong version number'(0x1408f10b) in connect for session '(c0,s1)_schoolber-messaging', connection 'client name 'NEXGEESERVER/11408/#00000001/xD2QfEursa', VPN name 'schoolber-messaging', peer host 'tcps://mr-16jp1pl8hgc5.messaging.solace.cloud
0 -
Hello,
I too stumbled on this issue and got the resolved with a suggestion provided by @alamkhan786 . Hoping this well help someone in the future
1st option and disable complete chain verification
// Create session properties
SessionProperties sessionProps = new SessionProperties()
{
Host = host,
VPNName = VPNName,
UserName = UserName,
Password = Password,
ReconnectRetries = DefaultReconnectRetries,
SSLValidateCertificate = false
};
2nd Option - Load the store which has the Trusted CA public certificate
X509CertificateCollection certificatesCollection = new X509CertificateCollection();
foreach (StoreLocation storeLocation in (StoreLocation[])Enum.GetValues(typeof(StoreLocation)))
{
foreach (StoreName storeName in (StoreName[]) Enum.GetValues(typeof(StoreName)))
{
X509Store store = new X509Store(storeName, storeLocation);
try
{
store.Open(OpenFlags.OpenExistingOnly);
foreach (X509Certificate certificate in store.Certificates)
{
certificatesCollection.Add(certificate);
}
}
catch (CryptographicException)
{
Console.WriteLine("No {0}, {1}", store.Name, store.Location);
}
}
Console.WriteLine();
}
Use it during the setup of SessionProperties
SessionProperties sessionProps = new SessionProperties()
{
Host = host,
VPNName = VPNName,
UserName = UserName,
Password = Password,
ReconnectRetries = DefaultReconnectRetries,
SSLTrustStore= certificatesCollection
};
Hope it will help the community.
Best Regards,
Franklin
2 -
Thank you so much for sharing @Frankee787
0