WCF REST服务 - 401未经授权

Rep*_*Man 8 iis rest wcf iis-7 http-status-code-401

我们正在开发一个WCF REST Web服务,它只接收来自任何匿名用户的大量任意文本,然后在后端执行一些处理.

例如,这是我们的Web服务中的一种方法:

[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...
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我们只使用默认的IIS设置,我们得到一个(401) Unauthorized.然而,在经过多次反复试验后,我们发现我们可以通过在实际.svc文件上为我们的服务提供WRITE访问权限来使其工作.

我的问题是:为什么IIS需要对.svc文件进行WRITE访问以使其工作?有没有更好的方法,还是我坚持这种hackish(可能不安全)的解决方法?

WTF微软?

可能相关:

cap*_*aig 9

我也发现这可以通过推杆修复

<authentication mode="None" /><system.web>在你的内心web.config


Rep*_*Man 7

在与M $的技术代表交谈后,我被告知这确实是预期的行为.该服务必须具有允许某人向其发送请求的写访问权限,并且当您执行此操作时,它实际上也会在.SVC文件上自动设置写访问权限.