Почему служба WCF SSL / Basic Authentication начинает выдавать 404? - PullRequest
1 голос
/ 31 августа 2010

У меня есть служба WCF, которая работает безупречно в течение 3 месяцев.Он используется локальными клиентами на одном сервере, на котором размещается служба WCF, и клиентами локальной сети.Он использует SSL и базовую аутентификацию для обеспечения безопасности.

Несколько ночей назад локальный клиент (клиенты локальной сети не затрагиваются) начал получать 404 ошибки при каждой попытке использовать службу.Я могу открыть браузер на сервере, на котором размещен WCF, просмотреть WSDL и даже вызвать команду «put» и получить ожидаемый «метод не разрешен».Я подтвердил, что на хост-сервере не было внесено никаких изменений программного или аппаратного обеспечения.Я подтвердил, что ключ SSL действителен.Я подтвердил, что разрешения для пула приложений достаточны.Я подтвердил, что брандмауэр не работает.Единственное, что странно, - это журнал IIS, показывающий, что первое сообщение не содержит пользователя с базовой аутентификацией.Однако следующая строка в журнале показывает и показывает ответ 200.Я не совсем уверен, что журнал не нормально.Увидеть ниже.Я надеялся, что кто-нибудь может дать мне другое место для исследования, чтобы найти проблему.Пожалуйста, дайте мне знать.

2010-08-28 10:30:03 192.168.100.100 POST /protected/Service_Name_Here.svc/put - 443 - 192.168.100.100 - 401 2 5 2
2010-08-28 10:30:03 192.168.100.100 POST /protected/Service_Name_Here.svc/put - 443 User_Name_Here 192.168.100.100 - 200 0 0 5

РЕДАКТИРОВАТЬ: локальный клиент, который выдает ошибку, передает большие файлы в службу WCF.Клиенты локальной сети передают небольшие файлы и не выдают ошибку.Я нашел эту ссылку , которая предполагает, что defaultMode = "Buffered" выбрасывает 404 для файлов размером более 20 МБ.Для этого человека было исправлено изменение TransferMode = "Streamed".Однако параметр «Потоковая передача» разрешает передачу только одного параметра в службу WCF.У меня есть несколько параметров, поэтому мне нужно найти исправление для «буферизованного» режима.

Ответы [ 2 ]

0 голосов
/ 31 августа 2010

Если у вас есть проблемы с размером сообщения, учтите, что существует 3 уровня настройки принятого размера запроса для IIS:

  • WCF - максимальный размер сообщения по умолчанию 65 КБ ( maxReceivedMessageSize )
  • ASP.NET во время выполнения WCF - максимальный размер запроса по умолчанию составляет 4 МБ ( maxRequestLength )
  • IIS 7 с установленной фильтрацией запросов - максимальный размер запроса по умолчанию около 28 МБ ( maxAllowedContentLength )

Если WCF отклонит ваше сообщение, вы, вероятно, получите полную ошибку, но для ASP.NET и IIS вы получите именно HTTP 404.

Потоковая передача не поможет вам, если вы не измените свои операции.

0 голосов
/ 31 августа 2010

Исправление для этого человека состояло в том, чтобы изменить TransferMode = "Streamed". Однако параметр «Потоковая передача» разрешает передачу только одного параметра в службу WCF. У меня есть несколько параметров, поэтому мне нужно найти исправление для «буферизованного» режима.

Звучит так, как будто это правильное решение, однако предостережение в том, что потоковый режим требует пользовательских контрактов сообщений; Вы не можете использовать стиль "RPC", который WCF выдвигает по умолчанию для операций. Если вам нужно предоставить более одного параметра при передаче в потоковом режиме, просто добавьте их в свой заказной контракт сообщений.

Вот хорошая дискуссия на эту тему от Microsoft.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...