Stiamo sviluppando un servizio Web REST WCF che riceve solo un gruppo di testo arbitrario da qualsiasi utente anonimo e quindi esegue l'elaborazione sul back-end.Servizio WCF REST - 401 Non autorizzato
Per esempio, ecco un metodo dal nostro servizio 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...
}
}
Se usiamo le impostazioni di IIS predefinite otteniamo un (401) Unauthorized
. Tuttavia, dopo molte prove ed errori, abbiamo capito che potevamo farlo funzionare dando accesso WRITE a "Everyone" sul file effettivo .svc
per il nostro servizio.
La mia domanda è: perché nel mondo IIS avrebbe bisogno di avere accesso in WRITE a un file .svc
perché funzioni? C'è un modo migliore o sono bloccato con questa soluzione (e forse insicura) hackish?
WTF Microsoft?
possibilmente correlate:
- PUT and DELETE in RESTful WCF Service cause 401 Unauthorized error
- IIS7 Post/Put/Patch/Delete WCF oData - Authentication Failure 401.3
I diritti di accesso non necessariamente deve essere concessa a "Everyone". Invece l'utente autenticato deve avere questi diritti. Per l'accesso anonimo questo è IUSR. – chiccodoro