Как избавиться от подключенного сервиса в.Net Standard
У меня есть веб-проект.Net Framework, который ссылается на службу WCF.
Я перемещаю этот веб-проект в.Net Standard. Я добавляю ту же службу WCF, что и подключенная служба. Даже если служба WCF одинакова, я могу заметить 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-запроса, который получает мой веб-проект... так что это правильный способ избавиться от моего клиента-оболочки?
Спасибо...