Как добавить пользовательские заголовки (User-Agent, Accept) в службу WCF с помощью bnoffer.owncloudsharp без изменения C#

Место общения программистов C#
Ответить
Anonymous
 Как добавить пользовательские заголовки (User-Agent, Accept) в службу WCF с помощью bnoffer.owncloudsharp без изменения

Сообщение Anonymous »

мы работаем над веб-приложением ASP.NET, которое использует службу WCF. Эта служба WCF взаимодействует с OwnCloud с помощью библиотеки bnoffer.owncloudsharp. После включения WAF (брандмауэр веб-приложений) WAF помечает мои запросы API правилом (OtherBots – ruleId 30070), указывающим, что действительные заголовки, такие как User-Agent и Accept, отсутствуют.
Проблема :
мы не можем изменить класс Client из библиотеки bnoffer.owncloudsharp, поскольку он декомпилирован, но нам нужно добавлять пользовательские заголовки (например, User-Agent и Accept) к каждому запросу, сделанному этим клиентом, не меняя сигнатуры методов мои существующие методы. у нас есть около 30 ссылок в базе кода, где вызываются такие методы, как DirectoryExist, CreateDirectory, Upload и т. д.
Вот структура класса OwnCloud, который я использую:

Код: Выделить всё

using owncloudsharp;
using owncloudsharp.Types;

public class OwnCloud
{
private Client c;

public OwnCloud(string owncloudURL, string userId, string password)
{
c = new Client(owncloudURL, userId, password);
}

public bool DirectoryExist(string path)
{
return c.Exists(path);
}

public bool CreateDirectory(string path)
{
return c.CreateDirectory(path);
}

public bool Upload(string path, Stream data, string contentType)
{
return c.Upload(path, data, contentType);
}

// ... other methods
}

Конструктор клиента (декомпилированный, не поддающийся изменению):

Код: Выделить всё

public Client(string url, string user_id, string password)
{
if (url != null && url.EndsWith("/"))
{
url = url.TrimEnd('/');
}

this.url = url;
rest = new RestClient();
rest.BaseUrl = new Uri(url + "/ocs/v1.php/");
rest.Authenticator = new HttpBasicAuthenticator(user_id, password);
rest.AddDefaultParameter("format", "xml");
dav = new WebDavManager();
dav.Credential = new WebDavCredential(user_id, password);
dav.Credential.AuthenticationType = AuthType.Basic;
}

Моя цель:
Добавить пользовательские заголовки (User-Agent: app/1.0, Accept: application/json) к каждому запросу, сделанному классом Client, не изменяя сигнатуры методов. моего существующего класса OwnCloud или декомпилированного класса Client.
Попытки:
мы рассматриваем возможность обертывания класса Client для добавления заголовков, но мы хотим знать, есть ли лучший способ централизовать управление заголовками без изменения существующих подписей.
Будем признательны за любые советы о том, как этого добиться!

Подробнее здесь: https://stackoverflow.com/questions/790 ... offer-ownc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»