Print Page | Close Window

Problem deploying with push notification

Printed From: IdeaBlade
Category: DevForce
Forum Name: DevForce 2009
Forum Discription: For .NET 3.5
URL: http://www.ideablade.com/forum/forum_posts.asp?TID=1923
Printed Date: 11-Jul-2020 at 3:52pm


Topic: Problem deploying with push notification
Posted By: mikewishart
Subject: Problem deploying with push notification
Date Posted: 28-Jun-2010 at 2:46pm
We're having some issues getting the push notification service to work in our test environment.  The service works just fine in development running on the local:9009 asp.net dev server.

If I have the clientPort set in the app.config <notificationService> tag, it times out trying to get a response when subscribing to the service.  If I remove the clientPort, I get error: Unable to create proxy to EntityServer_DB.svc/NotificationService service.  Is there more documentation on the pieces to the <notificationService> tag?

Note that we have database specific entityserver.svc files for dynamically connecting to other databases.  I don't think this is related to the issue, but worth noting.

Also found in the debuglog depending if clientport is set or not.
HTTP could not register URL http://+:9011/a188e2ed-0b31-4502-886e-0fe1e4415956/. Your process does not have access rights to this namespace
or
Unable to start the HTTP listener. The URI provided, 'http://mikew-pc:0/de4d8d4f-409d-4c29-b6a3-59502bd8db59/', is invalid for listening. Check the base address of your service and verify that it is a valid URI.

Thanks,
Mike


The app.config has:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="ideablade.configuration" type="IdeaBlade.Core.Configuration.IdeaBladeSection, IdeaBlade.Core, Version=5.2.5.0, Culture=neutral, PublicKeyToken=287b5094865421c0" />
  </configSections>
  <ideablade.configuration version="5.00" updateFromDomainModelConfig="No">
    <logging logFile="DebugLog.xml" />
    <objectServer isDistributed="true" remoteBaseURL="..." serverPort="12000" serviceName="EntityService.svc" />
    <edmKeys>
              ...
    </edmKeys>
    <notificationService enabled="true" serverPort="12000" clientPort="9011" />
  </ideablade.configuration>
</configuration>

and the web.config has:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="ideablade.configuration" type="IdeaBlade.Core.Configuration.IdeaBladeSection, IdeaBlade.Core, Version=5.2.6.0, Culture=neutral, PublicKeyToken=287b5094865421c0" />
  </configSections>
  <system.serviceModel>
    <!-- Define the default EntityService and EntityServer services use by DevForce.  -->
    <services>
      <service name="EntityService">
        <endpoint address="" binding="customBinding" bindingConfiguration="compressedBinaryBinding" contract="IdeaBlade.EntityModel.IEntityServiceContract" />
      </service>
      <service name="IdeaBlade.EntityModel.Server.EntityServer">
        <endpoint address="" binding="customBinding" bindingConfiguration="compressedBinaryBinding" contract="IdeaBlade.EntityModel.IEntityServerContract" />
        <endpoint address="NotificationService" binding="wsDualHttpBinding"  bindingConfiguration="DualBinding" contract="IdeaBlade.EntityModel.INotificationService" />
      </service>
    </services>
    <bindings>
      <customBinding>
        <binding name="compressedBinaryBinding">
          <gzipMessageEncoding>
            <readerQuotas maxArrayLength="2147483647" maxDepth="2147483647" maxStringContentLength="2147483647" />
          </gzipMessageEncoding>
          <httpTransport maxReceivedMessageSize="2147483647" />
        </binding>
      </customBinding>

      <!-- used by NotificationService -->
      <wsDualHttpBinding>
        <binding name="DualBinding" messageEncoding="Mtom" >
          <security mode="None" />
        </binding>
      </wsDualHttpBinding>
    </bindings>
    <extensions>
      <bindingElementExtensions>
        <add name="gzipMessageEncoding" type="IdeaBlade.Core.Wcf.Extensions.GZipMessageEncodingElement, IdeaBlade.Core" />
      </bindingElementExtensions>
    </extensions>
  </system.serviceModel>
  ...
</configuration>



Replies:
Posted By: JoshO
Date Posted: 30-Jun-2010 at 1:50pm
a major part of client and server communication is about identical endpoint configuration:
 
you must specify a "clientPort" and "serverPort" for <notificationService> and the related ports must be open on the firewalls of the client and server
 
the service names do not match - "EntityService.svc" in the app.config and "EntityService" in the web.config
 
make sure the "remoteBaseURL" of the <objectServer> element can be resolved to an IP address from the client when using a machine name (LAN) or a DNS name (Internet).
 
the server ports do not match - "12000" in the app.config and no custom endpoint in the web.config (endpoint address="")
      - since you are using a web.config then I am hoping you configured IIS to use port 12000 and opened that port in
         your server's firewall since the default port 80 (usually open) is not being used for this deployment. A blank endpoint
         address in the config will default to the IIS binding and port settings.
      - Which IIS version are you using ?
 
according to the config files, you might be using 2 different IdeaBlade.Core assembly versions:
 
app.config
<configSections>
    <section name="ideablade.configuration"
      type="IdeaBlade.Core.Configuration.IdeaBladeSection, IdeaBlade.Core, Version=5.2.5.0

  </configSections>
web.config
<configSections>
    <section name="ideablade.configuration"
      type="IdeaBlade.Core.Configuration.IdeaBladeSection, IdeaBlade.Core, Version=5.2.6.0

  </configSections>


Posted By: mikewishart
Date Posted: 01-Jul-2010 at 12:07pm
Hi Josh,

I'll have to get back to you on this later.  We received direction to change to VS2010 and DevForce 2010 from management, so I'm after that rats' nest.

One note, port 12000 is what we use for our test environment and we do have the port open on the router for the server and have it redirected to the appropriate machine.  We wouldn't be able to connect and perform Entity queries without that working.  The client app.config RemoteBaseURL is set to a static ip address, similar to "http://24.1.1.1".

I have one major technological concern about how push notification works.  It seems that it is creating a http listener on a specific port on the client.  The only way a client could receive messages on that port is if it is on the same LAN as the server, or in a WAN scenario, if the client's router knows about the specific port and opens a pinhole to that port and redirects traffic to the client machine.  If this is all true, then there's only one client per IP address which can receive push notifications as TCP/IP addressing to the client listener over the internet would take the form http://xxx.xxx.xxx.xxx:9011 and the client's router would intercept the message first.  I hope I'm wrong on this part.

IIS version is 6.0.

In devforce 2010, when calling RegisterCallback(), we get an error "*** License violation *** - 'Server side push facility' not supported with the current license: EnterpriseUniv".  Is this something to be resolved in the future?

Thanks


Posted By: Tiano
Date Posted: 26-Sep-2011 at 12:13am
Originally posted by JoshO

 
make sure the "remoteBaseURL" of the <objectServer> element can be resolved to an IP address from the client when using a machine name (LAN) or a DNS name (Internet).
 

It seems to me i made everything right as mentioned, but the problem remains..


Posted By: kimj
Date Posted: 27-Sep-2011 at 5:52pm
Hi Tiano, do you work with the original poster or are you reporting a new problem? 
We'll need more information on the version of DevForce you're using, and the specific error you've encountered.



Print Page | Close Window