Настройте конечную точку для веб-службы, объявленной с атрибутом WebService () - PullRequest
0 голосов
/ 13 октября 2010

У нас есть веб-служба C #, которая объявляет себя, используя атрибуты.Файл с выделенным кодом выглядит следующим образом:

[WebService(Namespace = "http://the.web.service.url/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public sealed class TheWebservice : WebService
{
    [WebMethod]
    public SomeObject TheFunction()
    ...

Веб-сервисы работают давно.Недавно один запрос привел к ошибке:

Максимальная квота длины строки (8192) была превышена при чтении данных XML.

После поиска я нашелчто есть параметр maxStringContentLength, который может увеличить максимальный размер.В посте говорится, что вы можете настроить этот параметр в Web.config в разделе BasicHttpBinding.Затем вы можете указать, что BasicHttpBinding в разделе endpoint.Но поскольку мы объявляем веб-службу с помощью атрибута WebService в файле code-behind, у нас нет секции endpoint.

Есть ли способ указать конечную точку с помощью декларативного атрибута?Альтернативно, возможно ли переключиться из атрибута в режим web.config, не нарушая существующие клиенты?Я здесь путаю WCF и его предшественника?

1 Ответ

0 голосов
/ 14 октября 2010

WebServiceAttribute используется для веб-сервисов ASMX.BasicHttpBinding используется в веб-службах WCF.Эти технологии не связаны, поэтому настройка BasicHttpBinding в конфигурации на вашем сервере не повлияет на поведение вашей веб-службы ASMX.Где произошла ошибка?На сервере или на клиенте?Ваш клиент основан на WCF или ASMX?

Редактировать: Поскольку мой предыдущий ответ не ясен, я добавляю это пояснение.Когда вы используете веб-сервис ASMX (на основе WebServiceAttribute), вы не можете использовать конфигурацию WCF (system.serviceModel), чтобы изменить его поведение.Это два разных API.НО вы можете использовать клиент на основе WCF для вызова / использования веб-службы ASMX, а в особых условиях вы можете использовать клиент на основе ASMX для вызова службы WCF.

...