You are viewing limited content. For full access, please sign in.

Question

Question

IPushNotificationService May Not Be Running

asked on August 30, 2019

I have a client that is receiving the following error message when testing the 'Laserfiche Notification Service Server' in the Forms Config window.

This is different than other ones I have seen. Any idea how to correct it? Forms 10.4.0.1256.

1 0

Replies

replied on August 30, 2019 Show version history

First, verify if the Laserfiche Notification Master Service (Laserfiche.PushNotificationService.Master.Host.exe) is in fact Running.

If it is Stopped, Start it.

If it is Running, Restart it, and then check the LFNotificationService event log for any errors.

The error messages the Notification Service itself emits are typically more informative than those of Forms, which are necessarily limited to "Unable to reach the Notification Service".

 

I have some recollection of seeing that error when the Forms Notification Service was not properly configured to use SSL/TLS (missing/incorrect cert binding on port 8181) or was unable to listen on 8181 due to lack of permissions or a missing URL ACL.

1 0
replied on October 9, 2019

By SSL/TLS not being properly configured, are you referring to step 5 in the Configuring SSL/TLS Encryption in Laserfiche white paper on page 20? Does that need to be done anytime Forms is configured to use SSL? Do those steps also need to be done on a DMZ Forms server?

0 0
replied on October 9, 2019

Yep, the item titled "5. The following steps are necessary for Forms notifications to work when SSL is enabled." I recall that FormsConfig will now automatically update the Notification Service configuration files mentioned in step "d. Update the following configuration files manually to change the hub host address to use https." Still check them to ensure they have the HTTPS addresses though.

You must perform those configuration steps any time Forms is configured to use SSL. Among other things, browsers are increasingly strict on "mixed content" (HTTPS and HTTP calls for the same site) and may block the insecure calls. 

See: https://www.howtogeek.com/443032/what-is-mixed-content-and-why-is-chrome-blocking-it/

https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content

The DMZ server scenario is more complex and only applicable if external users are actually logging into the DMZ Forms instance to access the task inbox. Anonymous public users cannot receive task assignments or access the Forms inbox, so they would never get real-time task notifications in the first place.

 

1 0
replied on October 9, 2019

Thank you for the clarification. I am curious though if for the DMZ instance, for those logging into Forms to access the Inbox if there is anything outside the the Forms DMZ white paper that needs to be done to get it to work? I have not run into any problems that I am aware of in the DMZ, but it could also be that I have not been paying attention to it specifically. I want to make sure I am training our team on the proper way to make sure everything is working as expected.

0 0
replied on October 15, 2019 Show version history

Hey Blake,

I can unfortunately almost guarantee that you do not have any DMZ Forms servers working with the Forms Notification Service. It requires special configuration and doesn't "work by default" for the DMZ instance. It's a relatively minor feature that doesn't break anything else when it isn't working, and people often don't know how to check.

Here's my verification process:

With that said, there is a way to make real-time Forms notifications work in a DMZ scenario by running a second instance of the Notification Hub service in the DMZ that connects back to the internal Notification Master service.

The following applies to the "Standard Forms DMZ configuration" with one DMZ Forms server and one internal Forms server, both connected to the same internal SQL database.

Please consider it an experimental configuration.

  1. Ensure both Internal Server and DMZ Server can resolve each others' hostnames in DNS.
  2. Ensure the following network traffic is allowed:
    1. DMZ Server to Internal Server on TCP port 8268
    2. Internal Server to DMZ Server on TCP port 8181
    3. External End Users to DMZ Server on TCP port 8181
  3. Install Forms Notification Services on DMZ Server and stop/disable the Notification Master service. Leave the Notification Hub service running.
  4. Change Forms web.config on the DMZ Server to set the lfpushnotification endpoint to Internal Server.
  5. Add another HubAddress key entry with the DMZ Server address in the Laserfiche.PushNotificationService.Master.Host.exe of the Internal Server.

    Then restart the Internal Server's Notification Master service.
  6. Then both the Internal and DMZ Forms servers can get notifications when tasks are assigned.

 

1 0
replied on October 15, 2019

I will test that on one of my test servers. I appreciate the information. Can this be vetted officially by Laserfiche and added to the Forms DMZ white paper?

1 0
replied on October 15, 2019

I'll pass the request to the Forms team. I know they got it working in a one-off test setup - don't know if it has gone through more formal vetting though.

Please do post back with your own findings!

Also note that the "Verifying the Forms Notification Service is working" infographic is applicable to all Forms instances, not just DMZ ones.

0 0
replied on December 3, 2020

I pulled up the dev tools and it does show a 500 error

{"errors":[{"status":500,"code":"NotificationServerConnectionDown","message":"A connection to the notification server could not be made. Notifications and real-time updates have been disabled. [LFF8100-NotificationServerConnectionDown]"}]}

Then in the LFNotificationService event log it gives this error, indicating that the problem is Forms not using the correct URI format. I think this is why the notification service does not work in any environment, regardless of how simple the environment is. Forms needs to use the correct URI.

Invalid URI: The format of the URI could not be determined.

Stack Trace:
Caught exception: System.UriFormatException
Message: Invalid URI: The format of the URI could not be determined.
   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
   at System.Uri..ctor(String uriString)
   at Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.Get(String url, Action`1 prepareRequest, Boolean isLongRunning)
   at Microsoft.AspNet.SignalR.Client.Transports.TransportHelper.GetNegotiationResponse(IHttpClient httpClient, IConnection connection, String connectionData)
   at Microsoft.AspNet.SignalR.Client.Transports.AutoTransport.GetNegotiateResponse(IConnection connection, String connectionData)
   at Microsoft.AspNet.SignalR.Client.Transports.AutoTransport.Negotiate(IConnection connection, String connectionData)
   at Microsoft.AspNet.SignalR.Client.Connection.Negotiate(IClientTransport transport)
   at Microsoft.AspNet.SignalR.Client.Connection.Start(IClientTransport transport)
   at Laserfiche.SignalR.Client.LFHubProxy.Connect()
   at Laserfiche.SignalR.Client.Factories.LFHubProxyFactory.Create(HubEndPoint hubEndPoint)
   at Laserfiche.PushNotificationService.Master.Services.RegisterService.Register(PushServiceRegisterRequest registerData)
   at Laserfiche.PushNotificationService.Master.PushNotificationService.Register(PushServiceRegisterRequest registerData)
   at SyncInvokeRegister(Object , Object[] , Object[] )
   at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
   at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

 

You are not allowed to follow up in this post.

Sign in to reply to this post.