10.2 Upgrade woes


(Bernie Walker) #1

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


(Chris Conn) #2

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?


(Bernie Walker) #3

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:


(Erik Johnson) #4

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?


(Bernie Walker) #5

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)````

(Erik Johnson) #6

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?


(Bernie Walker) #7

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


(Bernie Walker) #8

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


(Tim VonDerHaar) #9

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


(Bernie Walker) #10

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" />


(Tim VonDerHaar) #11

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.


(Bart Elia) #12

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’


(Tim VonDerHaar) #13

Thanks for the quick reply Bernie.