我们正在开发一个WCF REST Web服务,它只接收来自任何匿名用户的一堆任意文本,然后在后端执行一些处理。
例如,这是我们的Web服务中的一种方法:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class MyRESTService : IMyRESTService
{
[WebInvoke(Method = "PUT", UriTemplate = "/MyRESTMethod?paramA={paramA}¶mB={paramB}")]
public Stream MyRESTMethod(string paramA, string paramB, Stream rawData)
{
//do some stuff...
}
}
如果我们只使用默认的IIS设置,我们会得到(401) Unauthorized
。但是,在经过多次反复试验后,我们发现我们可以通过在实际的.svc
文件上为每个人提供WRITE访问权限来使其工作。
我的问题是:为什么IIS需要对.svc
文件进行WRITE访问才能使其正常工作?有没有更好的方法,还是我坚持这种hackish(可能不安全)的解决方法?
WTF微软?
可能相关:
答案 0 :(得分:9)
我也发现这可以通过添加
来解决<authentication mode="None" />
中<system.web>
内的 web.config
答案 1 :(得分:7)
在与M $的技术代表交谈后,我被告知这确实是预期的行为。该服务必须具有允许某人向其发送请求的写访问权限,并且当您执行此操作时,它实际上也会在.SVC文件上自动设置写访问权。