简体   繁体   中英

How to “Add Service Reference” in .NET Standard project

I would like to do "Add Service Reference" in .NET Standard project.(Visual Studio 2017)

I installed "System.ServiceModel.Http" and "System.ServiceModel.Security" on NuGet in order to make WCF access possible.

However, there is no "Add Service Reference" menu item in the .NET Standard project. How do I add a service reference?

It exists in the .NET Framework project but it does not exist in the .NET Standard project, so it is in trouble.

I landed here hoping to solve a slightly different problem... but to maybe answer your question;

I had to update VS2017 to the latest version (I'm now on 15.5.2), then; Right-Click the project >> Add >> Connected Service, then click "Microsoft WCF Web Service Reference Provider". The provided dialog is very similar to that of the Framework "Add Service Reference" option.

It's the same "Add" menu you would use if you were to add a new class etc...

This was added in verion 15.5. See WCF on github for more info.

Visual Studio 2017 Community v15.9.7

Solution Explorer -> Right click -> Add -> 添加

ScreenShot:

These solutions didn't really work for me. I was using this with Unity 2019.1.10f and Visual Studio 2017. I found what you need to do is add the dll's that relate to WCF to your Unity project and then generate the service client proxy and bring that over to your scripts. Step by Step below.

  1. Create a new Unity 3D project, or open yours, then create a new folder under Assets called Plugins.
  2. Navigate to the installation folder of Unity (eg C:\\Program Files\\Unity\\Hub\\Editor\\2019.1.10f1).
  3. From the installation folder, navigate to the the Editor\\Data\\Mono\\lib\\mono\\2.0, in this folder you should find System.ServiceModel.dll, you need to copy this file into the Plugins folder created in step 1.
  4. Now generate the the service client proxy, you can do this in a few ways, one option is to use svcutil, for example run the command below in a VS command prompt to generate the client proxy class.

    svcutil -out:c:\\temp\\ClientProxy.cs https://[YourWebServiceDomain]/[Service].svc

  5. Copy the ClientProxy.cs file above into your project wherever you like under assets.

  6. Now add a new Monobehaviour script, something like WebClient.cs into your project. You'll need to attach this to some game object in your scene for the script below to run.
  7. Open up the WebClient.cs and add your code to connect to the new proxy service, example below.
using UnityEngine;
using System.ServiceModel;
using YourClientProxyNamespace;

public class WebClient : MonoBehavior
{
  void Start()
  {
    using (ProxyClient client = new ProxyClient(
        new BasicHttpBinding(BasicHttpSecurityMode.Transport),
        new EndpointAddress("https://YourWebServiceDomain/Service.svc")))
    {
      var response = client.DesiredMethod();

      // Do whatever with the response
    }    
  }
}

实际上你可以右键单击,转到“添加连接服务”,然后单击“Microsoft WCF Web 服务引用提供程序”,它应该与“添加服务”相同。

This exercise is based on Use the WCF Web Service Reference Provider Tool

Environment:

I have consumed asmx web service, but the documentation said: its the same whit WCF service. I think it apply to all SOAP service.

  1. Add service reference (using WCF Web Service Reference Provider Tool).
  2. Add package references:

1) Steeps to add service reference:

Project> Add connected Service

添加连接的服务

Add WCF service Reference to Project.

添加 WCF 参考

发现

命名

包裹

您可以通过将您的服务拖入 bin 目录来手动添加它

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM