Как избавиться от подключенного сервиса в.Net Standard

У меня есть веб-проект.Net Framework, который ссылается на службу WCF.

Я перемещаю этот веб-проект в.Net Standard. Я добавляю ту же службу WCF, что и подключенная служба. Даже если служба WCF одинакова, я могу заметить 2 основных различия:

  1. Клиент не может быть идентифицирован;
  2. Генерируются только асинхронные методы.

Ну, я изменил весь мой код, чтобы он поддерживал асинхронные методы, но я не уверен, что мой класс корректен... Вот код:

public class MyCustomClient : IMyCustomClient
{
    private bool _disposed;

    WSClient _client;

    public MyCustomClient()
    {
        this._client = new WSClient(WSClient.EndpointConfiguration.WSClientSoap12);
    }

    public async Task<MyResult> DoWorkAsync(...)
    {
        ...
        MyResult something = await this._client.DoWork();
        ...

        return something;
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (this._disposed)
            return;

        if (disposing)
        {
            if (this._client.State != System.ServiceModel.CommunicationState.Closed &&
                this._client.State != System.ServiceModel.CommunicationState.Closing)
                this._client.CloseAsync(); //Here the doubt... The Close method is async, but the dispose not.... 

            this._client = null;
        }

        this._disposed = true;
    }
}

Как вы можете видеть выше, метод Close является асинхронным, но не утилизирует.... То, что мне нужно, это то, что я должен открывать и закрывать клиент wcf для каждого HTTP-запроса, который получает мой веб-проект... так что это правильный способ избавиться от моего клиента-оболочки?

Спасибо...

0 ответов

Другие вопросы по тегам