none
.Net Core 3.1 connection to Dynamics GP Web Services will not work using WCF Web Service Reference Provider. Is there a solution? RRS feed

  • Question

  • I have tried to use the Microsoft WCF Web Service Reference Provider to create a connection to Microsoft Dynamics GP Web Services from inside a .NET Core 3 web API project and am getting an error stating "No endpoints compatible with .Net Core apps were found". It says that the System.ServiceModel.Channels.SymmetricSecurityBindingElement element type is unsupported.

    GP Web Services are running and in use by an older web site so they are actively in use and therefore not the problem.

    As a result of the errors, I cannot generate a proxy using either the legacy or the native end point WSDL’s from inside a .NET Core project.

    I also cannot reference a project using an older version of Microsoft .NET framework from the newer Microsoft .NET Core project. This means I cannot just reference the existing project we use or even try to make a new project with the older framework as the base.

    I would like to ask if anyone else has this issue and has found a workaround or a way to utilize GP Web Services from a .NET Core 3 project when they cannot create the proxy through the means provided by Microsoft? Unhappy with this since they are both Microsoft products and you would think they could talk to each other ...

    Thursday, March 19, 2020 7:03 PM

All replies

  • Hi,
    Theoretically, the WCF client proxy is only appliable for DotNet framework. The Core-based WCF client only a workaround for WCF service. Certain complex WCF created by message security binding(ws-security) is not compatible with DotNet Core.
    https://github.com/dotnet/wcf
    you should consume this sort of WCF service in a DotNet framework project. WCF service based on the DotNet framework, which is completely different from the DotNet Core platform.
    Due to the fact that DotNet Core application can run in some other platforms, such as Linux, Mac. WCF is simply an RPC based on the SOAP message on the Windows platform. At present, G-RPC will be the next generation of  RPC products, that supports cross-platform.
    Best Regards
    Abraham Qian
    Monday, March 23, 2020 3:04 AM
    Moderator
  • Question:  isn't .NET Core going to be the central piece of the upcoming .NET where the .NET framework and .NET Core become one platform?  How does one prepare for that if we cannot continue utilizing things like the legacy or native endpoint services that are still prevalent and in use?

    Should we be expecting the future .NET (combined platform) to not be usable with GP Dynamics web services (another Microsoft product by the way) which have not been updated in some time? What about other existing web services that are also in that state and that customer have no control over?

    Also, since the angular template provided uses .NET Core what are the options there except to make your own?


    • Edited by Rae_P Monday, March 23, 2020 4:05 PM
    Monday, March 23, 2020 3:57 PM
  • Hi,
    Any framework will have problems of compatibility and future development. I don't quite understand the future development mode of WCF. At present, RPC and restful services are the mainstream service frameworks. We should consider refactoring projects. 
    As far as I know, current web application based on Single Page Application, with a Restful service framework in the backend and a frontend built with Angular and react.  We should create a Core-based WebAPI in the backend. Then we create an angular project, interacting with it by HttpClient library.
    https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.1&tabs=visual-studio
    Best Regards
    Abraham Qian
    Tuesday, March 24, 2020 9:31 AM
    Moderator
  • I'm sorry Abraham, but this does not appear to help my problem or I am somehow being obtuse and not seeing the obvious.

    The basic issue at hand is: 

    A .NET Core project has no way to create a proxy to web services that are not more current in nature. I have no control over the GP Dynamics Web Services and have no idea how to duplicate what they do under the covers so I cannot just "make my own" services to duplicate their functionality as I might miss something extremely important. They are used heavily in the existing older web site we wish to upgrade and cannot just be ignored or left out.

    That being said, i can only see two very unhelpful options. Thus my plea to see if anyone else has overcome this issue with any type of workaround.

    1. Use .NET Core and not have access to the GP Web Services.  This is not possible since the GP Web Services are integral to the functionality of our web sites.  As such this is not really an option we can use unless we can find a workaround.

    2. Ignore .NET Core and go with .NET Framework. This is not desirable either since we would be limiting our future potential upgrades - that is the whole reason we are looking at this right now because our old web site uses a very outdated DNN framework that we will not use going forward and so must be completely rewritten with a modern base code in order to be updated. In the future, we want to be able to update inline without another rewriting caused by outdated framework issues.

    Tuesday, March 24, 2020 3:38 PM
  • You should be able to use a .NET Standard program where WCF can be implemented, becuase a .NET Core  program can use the .NET Standard program as a proxy. 
    Tuesday, March 24, 2020 10:04 PM