Is a Web Service Runtime available in .Net Core - c#

My team has written maintains a library that wraps functionality around a full framework .net .dll, specifically the IBM FileNet.Api.dll. We have been transitioning our library to use .net Standard and so far, all is well. After creating a .net core app and attempting to connect to FileNet, we run into a web service runtime problem.
Here is the error that is thrown:
The operation cannot be completed because a supported web service
runtime is not present. Either Microsoft Web Services Extensions (WSE)
3.0 or the Windows Communication Foundation (WCF) is required.
Does anyone know of a NuGet package that provides this runtime for .net Core or a workaround for this issue?

Updade:
I have now had several conversations with the engineer team at IBM and they do not support .NET Core, nor do they plan on supporting it at this time. What I am doing is to create a .NET Framework 4.x API to basically convert to and from FileNet. It's a bit janky but when the customer wants their API in .NET Core I'm having to build something to make it work.
I'm running into the same issue. From what I've discovered System.Web.Services which is used by the FileNet.Api.dll and IBM's CEWSI for creating SOAP connections has been deprecated after .NET Framework 4.x in favor of WCF and is not available in .NET Core, .NET Standard, nor .NET 5.
It also appears that Microsoft is pushing developers to use REST instead of SOAP. I have not found anything from IBM to replace the DLL or CEWSI.
Sorry this isn't more useful, I'm still trying to figure out how to use .NET Core with it as well and short of basically recreating the functionality myself I haven't found a viable solution.

Related

Running library for framework 4.8 for a .NET 6 API

I've seen a few conflicting answers about this topic so I'm hoping someone can lead to the right one. I'm building an API that uses devdept Eyeshot library. This library requires .net framework 4.8. I would like to use .NET 6 for my API because from what i can tell, Framework does not have great tools when it come to web development.
I've tried two different set-up's for my solution:
.NET 6 API with a .NET 6 class library where i tried to reference the relevant framework library.
.NET 6 API with framework 4.8 class library.
When I call the class i get the error -"Could not load type 'System.Runtime.Remoting.RemotingServices' from assembly 'mscorlib, Version=4.0.0.0'". But when i run it from a framework 4.8 API it works.
So is there and why at all to get this working with a .NET 6 API, no matter how complicated or does the API have to target the same framework?
You are out of luck unless there is an updated version. The remoting services it depend upon has been removed in the .Net core & .Net 5+. So the library will fail to load, at least if the jitter ever reaches any method that uses one of the removed APIs.
If this is a first party or open source library you might consider updating to .Net 5+, and replace the remoting service with some newer IPC technology. If it is third party commercial library you might politely ask them to update their library, it should be in their own interest since most libraries already have transitioned to .net 5+.
If that is not an option, a possible workaround is to run the library in a separate process, and use your favorite IPC/RPC method to communicate with this processes.
In addition to the other answer (I was just going to post something similar), do note that when you reference a .NET Framework library from a .NET 6.0 app, the entire code will run in the .NET 6.0 runtime. There's no second execution environment created, therefore the .NET Framework library actually executes against the .NET 6.0 runtime library and fails if it requires features that no longer exists there. Many older libraries work fine that way, since the runtime is mostly backwards compatible, with some notable exceptions. 'System.Runtime.Remoting.RemotingServices is one of them.

How to make .Net Core client app communicate to a .Net Framework service using .Net Remoting

I have a .Net Core (3.1) Client application that needs to get data from a .Net Framework (4.6.2) application/service. The .Net Framework service communication was written using the .Net Remoting. From what I understood, .Net Core doesn't support several features from .Net Framework, which includes the .Net Remoting.
How should I make the .Net Core Client application get data from the .Net Framework application? It's not an option to change the .Net Framework service to .Net Core because of some time and expertise constraints on that service.
I'm thinking of creating another library project that is targeted to .Net Standard 2.0. This library will be referenced by the .Net Core Client application. And the .Net Standard Library will still be using the .Net Remoting interface to communicate with the legacy service. Would this work?
Another dumb question, how will the remoting configuration be done? Since it's a library, I cant place a .config file in it. The .config file should be on the client project. But, the client project doesn't have the .config file (it only has the appsettings.json and launchsettings.json). I simply creating/adding a project.config file would work? or is there a .json equivalent structure?
This isn't going to work. You have your core application running on a core CLR. It cannot load a library that's using functionality the depends on running on a non-core CLR.
You need to change the language that's being talked between the two applications. If you "can't" modify the existing service, then you probably need to write a new application that will act as a proxy. It'll run independently alongside the service and talk remoting to the legacy application, whilst talking e.g. HTTP or something else supported with the .NET core application.

Is System.Messaging.dll not available in .Net Core?

I have a C# Publisher-Subscriber project intended to make use of the MSMQ service in Windows. The code was developed in .Net Framework 4. I want to run it in .Net Core. But I am getting the error
"The type or namespace name "Messaging" donot exist in the namespace System".
Does .Net Core support MSMQ?
Does .Net Core has a corresponding System.Messaging.dll which appears to be missing.?
MSMQ is not platform independent and therfore not supported by .Net Core.
Even though MSMQ is Windows only, the future even on Windows is .NET Core and .NET Framework basically is end-of-life.
Currently the only way to use MSMQ on .NET Core is via the following package:
https://github.com/krazure/Experimental.System.Messaging

Visual Studio - Cannot start ASP.NET Core project

Last few months I create console applications with .NET framework and C#.
Now I want to create ASP.NET Core MVC projects, but I cannot choose any .NET Core template.
If I click "Console App (.NET Core)" or "ASP.NET Core Web Application" or any other .NET Core template, I can see this error message:
So, the problem occurs if I choose "Core", other templates work fine.
I have already tried to find a solution on Google.
What could be the problem? I reinstalled VS few times but did not help.
.NET Core does not support COM. COM is a Windows-only thing, and everything in Core is cross-platform. You must run on the full framework if you need to utilize a COM library.
That said, Microsoft has recently release a preview NuGet with some Windows compatibility APIs. This may allow you to utilize COM; I haven't tried it. However, the stated purpose of the NuGet is to make it easier to migrate existing .NET Framework applications to .NET Standard/.NET Core, so it's not considered something you would continue to utilize long-term. Rather, the idea is that you would actively work to migrate code that is not compatible to equivalent .NET Standard/.NET Core APIs, and then eventually remove the package entirely. As a result, it's probably not a good idea to go this route, even if it does enable you to use the COM library, simply because you're not likely to be able to stop at some point in the future.
Long and short, just run on the full framework.

Is there a way to add and start a .Net Core 2.0 REST server inside a .Net Framework 4.5.2 (or .Net Framework 4.6.1 or .Net Standard 2.0) application?

Issue
Hi,
I am currently working on implementing a RESTful API in C# using ASP.net Core 2.0 in Visual Studio 2017 (running only via Kestrel, therefore no IIS).
Everything works pretty well, no issues there. The thing is that I now need to integrate and start this REST Server in another project (The REST server being only one of many functionalities that need to be executed at the same time, using a "bootstrap"). My issue here is that the latter project targets .Net Framework 4.5.2 whereas the REST server targets .Net Core 2.0. Thus, when I add the REST server to the references of my bootstrap application, I encounter a couple of errors saying that some of the Nuget packages target the wrong framework.
Solutions I tried
I searched over Google but most of the issues I found were people trying to do the other way round, i.e. adding a .Net Framework-targeted project in a .Net Core application.
The way I understood this .Net implementation support table, is that a .Net standard 2.0 project can support a .Net Core 2.0 project (I am probably wrong).
I tried a couple of things to make it work (which, spoiler alert, obviously and unfortunately did not work as I wouldn't be asking your help) :
Made the boostrap application target .Net Standard 2.0
Made the boostrap application target .Net Framework 4.6.1
Made the REST server application target .Net Standard 2.0 (which it of course didn't work, but I was kind of desperate..)
I made these target change by modifying the .csproj files.
I don't have the exact error codes because I reverted my changes a while back but they all were about projects not targeting the same framework.
So, in a tl;dr manner, what I am asking is :
Is there a way to add a .net Core 2.0 REST server inside a .Net Framework 4.5.2 (or 4.6.1 and higher/ or .Net Standard 2.0) project to start the server inside the application ?
Apologies for any english mistake as it is not my native language.
Don't hesitate to ask more info on my problem if I wasn't clear enough and thanks for the help !

Categories