Служба Отдыха WCF - 401 Несанкционированный - PullRequest
8 голосов
/ 17 августа 2011

Мы находимся в процессе разработки веб-службы WCF REST, которая просто получает пакет произвольного текста от любого анонимного пользователя, а затем выполняет некоторую обработку на серверной части.

Например, вот один из методов нашего веб-сервиса:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class MyRESTService : IMyRESTService
{
    [WebInvoke(Method = "PUT", UriTemplate = "/MyRESTMethod?paramA={paramA}&paramB={paramB}")]
    public Stream MyRESTMethod(string paramA, string paramB, Stream rawData)
    {
        //do some stuff...
    }
}

Если мы просто используем настройки IIS по умолчанию, мы получаем (401) Unauthorized. Однако после долгих проб и ошибок мы выяснили, что можем заставить его работать, предоставив WRITE доступ к «Все» в действительном файле .svc для нашего сервиса.

Мой вопрос: почему в мире IIS должен иметь WRITE доступ к файлу .svc, чтобы это работало? Есть ли лучший способ, или я застрял с этим хакерским (и, возможно, небезопасным) обходным путем?

WTF Microsoft?

Возможно связано:

Ответы [ 2 ]

9 голосов
/ 12 сентября 2013

Я также обнаружил, что это можно исправить, поставив

<authentication mode="None" /> внутри <system.web> в вашем web.config

7 голосов
/ 27 октября 2011

После разговора с техническим представителем M $ мне сообщили, что это действительно ожидаемое поведение.У службы должен быть разрешен доступ на запись, чтобы кто-то мог отправить ей запрос, и когда вы это сделаете, она автоматически установит права на запись и для файла .SVC.

...