bw2868bond
(Bernie Walker)
September 24, 2018, 11:32am
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
(Chris Conn)
September 24, 2018, 4:13pm
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?
bw2868bond
(Bernie Walker)
September 24, 2018, 5:41pm
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
erikj
(Erik Johnson)
September 24, 2018, 5:58pm
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?
bw2868bond
(Bernie Walker)
September 24, 2018, 6:23pm
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)````
erikj
(Erik Johnson)
September 24, 2018, 8:05pm
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?
1 Like
bw2868bond
(Bernie Walker)
September 24, 2018, 9:54pm
7
The service certificate is not provided. Specify a service certificate in ServiceCredentials.
bw2868bond
(Bernie Walker)
September 24, 2018, 11:07pm
8
I have this sorted out now - Thanks for all who replied
tvonderhaar
(Tim VonDerHaar)
October 11, 2018, 5:24pm
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
bw2868bond
(Bernie Walker)
October 11, 2018, 5:41pm
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" />
1 Like
tvonderhaar
(Tim VonDerHaar)
October 11, 2018, 5:46pm
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.
1 Like
Bart_Elia
(Bart Elia)
October 11, 2018, 5:51pm
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’
2 Likes
tvonderhaar
(Tim VonDerHaar)
October 11, 2018, 5:58pm
13
Thanks for the quick reply Bernie.