10.2 Upgrade woes

The db and application upgrade went OK BUT
I have a couple of heavily used “web” applications that are broken
I am getting endpoint not found exceptions so I think the code used to implement the service contracts is in need of updating but I am unsure what needs to change. I really could use some wise eyes to look the code over

UriBuilder builder = new UriBuilder(scheme, "<Server FQDN>");
            builder.Path = "<AppName>/Ice/BO/DynamicQuery.svc";
            DynamicQuerySvcContractClient dqSvcClient = GetClient<DynamicQuerySvcContractClient, DynamicQuerySvcContract>(builder.Uri.ToString(), epicorUserID, epiorUserPassword, bindingType);
            dqSvcClient.Endpoint.EndpointBehaviors.Add(new HookServiceBehavior("<Company>", "MfgSys"));
            dqSvcClient.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = System.ServiceModel.Security.X509CertificateValidationMode.None;
            QueryExecutionTableset _qeT = new QueryExecutionTableset();
            ExecutionFilterRow _qeR = new ExecutionFilterRow();


            _qeR.DataTableID = "JobHead";
            _qeR.FieldName = "JobNum";
            _qeR.CompOp = "=";
            _qeR.RValue = txtJobNum.Text;
            _qeR.RowMod = "A";
            _qeR.SysRowID = Guid.NewGuid();
            _qeT.ExecutionFilter = new ExecutionFilterTable();
            _qeT.ExecutionFilter.Add(_qeR);
            var dsTest = dqSvcClient.ExecuteByID("JobStatus", _qeT);

Inner Exception = {“The remote server returned an error: (404) Not Found.”}
Message = There was no endpoint listening at http:////Ice/BO/DynamicQuery.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details

Looks like you dont have any values assigned to Server FDQN and AppName

I am unfamiliar with the use of

> <value>

Does that do interpolation? Is it a an extension method?

I just put those in there to remove actual server, company names

in any event I jogged my memory and the 10.1.500 server had an edited web.config file to allow http / soap connections

when I try to do the same to the 10.2.200 web.config file it blows it up :frowning:

What do you mean “it blows up”? Do you get a config error (which blocks everything across all protocols) or is there an error when you try to call the specific service?

When the web.config is saved it resets the entire application…

Changing this:


      <remove scheme="net.tcp" />

      <!--<add scheme="net.tcp" binding="customBinding" bindingConfiguration="TcpCompressedWindows" />-->

      <!--<add scheme="net.tcp" binding="customBinding" bindingConfiguration="TcpCompressedUsernameSslChannel" />-->

      <add scheme="net.tcp" binding="customBinding" bindingConfiguration="TcpCompressedUsernameWindowsChannel" />

      <!--

      <remove scheme="http" />

      <add scheme="http" binding="wsHttpBinding" bindingConfiguration="SOAPHttp" />

      <add scheme="http" binding="customBinding" bindingConfiguration="HttpBinaryUsernameSslChannel" />

      <add scheme="http" binding="customBinding" bindingConfiguration="HttpsOffloadBinaryUserNameChannel" />

      <add scheme="http" binding="customBinding" bindingConfiguration="HttpsOffloadBinaryAzureChannel" />

      -->

      <!--

      <remove scheme="https" />

      <add scheme="https" binding="customBinding" bindingConfiguration="HttpsBinaryUsernameChannel"/>

      <add scheme="https" binding="customBinding" bindingConfiguration="HttpsBinaryAzureChannel"/>

      <add scheme="https" binding="customBinding" bindingConfiguration="HttpsBinaryWindowsChannel"/>

      <add scheme="https" binding="basicHttpBinding" bindingConfiguration="BasicHttp" />

      -->

      <remove scheme="http" />

      <remove scheme="https" />

    </protocolMapping>

to this:


      <remove scheme="net.tcp" />

      <!--<add scheme="net.tcp" binding="customBinding" bindingConfiguration="TcpCompressedWindows" />-->

      <!--<add scheme="net.tcp" binding="customBinding" bindingConfiguration="TcpCompressedUsernameSslChannel" />-->

      <add scheme="net.tcp" binding="customBinding" bindingConfiguration="TcpCompressedUsernameWindowsChannel" />

      <remove scheme="http" />

      <add scheme="http" binding="wsHttpBinding" bindingConfiguration="SOAPHttp" />

      <!--

      <add scheme="http" binding="customBinding" bindingConfiguration="HttpBinaryUsernameSslChannel" />

      <add scheme="http" binding="customBinding" bindingConfiguration="HttpsOffloadBinaryUserNameChannel" />

      <add scheme="http" binding="customBinding" bindingConfiguration="HttpsOffloadBinaryAzureChannel" />

      -->

      <!--

      <remove scheme="https" />

      <add scheme="https" binding="customBinding" bindingConfiguration="HttpsBinaryUsernameChannel"/>

      <add scheme="https" binding="customBinding" bindingConfiguration="HttpsBinaryAzureChannel"/>

      <add scheme="https" binding="customBinding" bindingConfiguration="HttpsBinaryWindowsChannel"/>

      <add scheme="https" binding="basicHttpBinding" bindingConfiguration="BasicHttp" />

      <remove scheme="http" />

      -->

      <remove scheme="https" />

    </protocolMapping>````

Causes this error to show in Administration Console:

 ````System.ServiceModel.ServiceActivationException: The requested service, 'net.tcp://erp102200.adcocircuits.com/ERP102200/Ice/BO/UserFile.svc' could not be activated. See the server's diagnostic trace logs for more information.

Server stack trace:

    at System.ServiceModel.Channels.ConnectionUpgradeHelper.DecodeFramingFault(ClientFramingDecoder decoder, IConnection connection, Uri via, String contentType, TimeoutHelper& timeoutHelper)

   at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.SendPreamble(IConnection connection, ArraySegment`1 preamble, TimeoutHelper& timeoutHelper)

    at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.DuplexConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)

   at System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)

   at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)

   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)

   at System.ServiceModel.Channels.SecurityChannelFactory`1.ClientSecurityChannel`1.OnOpen(TimeSpan timeout)

   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)

   at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)

   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)

   at System.ServiceModel.Channels.CommunicationObject.Open()

Exception rethrown at [0]:

   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

   at System.ServiceModel.ICommunicationObject.Open()

   at Epicor.ServiceModel.Channels.ChannelEntry`1.CreateNewChannel()

   at Epicor.ServiceModel.Channels.ImplBase`1.GetChannel()

   at Epicor.ServiceModel.Channels.ImplBase`1.HandleContractBeforeCall()

   at Ice.Proxy.BO.UserFileImpl.IsPasswordExpired(String userID, Int32& graceCount)

   at Epicor.Mfg.Administration.ServerManagement.ApplicationServerManager.Forms.NewSessionForm.BackgroundWorker_DoWork(Object sender, DoWorkEventArgs e)

   at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)

   at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)````

What happens if you hit
http://erp102200.adcocircuits.com/ERP102200/Ice/BO/UserFile.svc
with a browser (with the manual change in place)? If the configuration is messed up, it should show you a detailed message in the browser. Alternatively, the same message should be echoed in the Windows Event Log (Application Log).

Also, can you send the SOAP 1.2 section of the web.config file?

1 Like

The service certificate is not provided. Specify a service certificate in ServiceCredentials.

I have this sorted out now - Thanks for all who replied

Hi Bernie,
Looks like I’ve stumbled on this very same issue while testing our upgrade to 10.2. What was your final solution?

Tim

I had to apply the correct security certificate in the administration console

I added a http EndPoint Binding HttpBinaryUsernameSSLChannel with that certificate

After the AppServer config finished, I went back and edited the web.config changing the enabled line

<add scheme="https" binding="customBinding" bindingConfiguration="HttpsBinaryWindowsChannel"/>

To

<add scheme="http" binding="wsHttpBinding" bindingConfiguration="SOAPHttp" />

1 Like

FWIW, and I’m embarrassed to admit, it was a simple error in editing my web.config file. Version 10.2 has a few extra lines under the protocolMapping section that I overlooked and neglected to comment out the last two “remove scheme” lines which basically removed the bindings I had just set earlier in the file.

1 Like

Is it plugged in - no - is always embarrassing and way too real and common.
This industry of software is barely toddling compared to other engineering disciplines. We should never be embarrassed and always learning and sharing to improve the ‘science’

2 Likes

Thanks for the quick reply Bernie.