services publicar net asp ambiente agregar c# .net wcf iis wcf-data-services

c# - publicar - Obtuve un "401-No autorizado" al probar mi servicio de datos WCF en IIS



wcf iis 10 (3)

Desarrollé un WCF Data Service, que funciona bien, puedo hacer todas las operaciones que quiero.

Desarrollé un pequeño cliente c # que prueba todas las funciones: agregar, eliminar, modificar, recuperar datos.

Todo funciona bien en mi servidor de estudio visual, pero una vez que estoy en el servidor IIS:

  • Puedo agregar / recuperar datos
  • No puedo editar datos

Cuando intento editar datos obtengo este error:

System.Data.Services.Client.DataServiceRequestException no fue manejado
Mensaje = Une erreur s''est produite lors du traitement de cette requête.
Fuente = System.Data.Services.Client
StackTrace:
à System.Data.Services.Client.DataServiceContext.SaveResult.HandleBatchResponse ()
à System.Data.Services.Client.DataServiceContext.SaveResult.EndRequest ()
à System.Data.Services.Client.DataServiceContext.SaveChanges (opciones de SaveChangesOptions)
à System.Data.Services.Client.DataServiceContext.SaveChanges ()
à WSTester.Program.ModifySomeThings (Entidades entidades) dans D: / Workspace / 10067.GfK
Telecontrol.TOM / Release / V3.1 / WSTester / Program.cs: ligne 90
à WSTester.Program.Main (String [] args) dans D: / Workspace / 10067.GfK Telecontrol.TOM / Release / V3.1 / WSTester / Program.cs: ligne 23
à System.AppDomain._nExecuteAssembly (ensamblado RuntimeAssembly, String [] args)
à System.AppDomain.ExecuteAssembly (String assemblyFile, Evidence assemblySecurity, String [] args)
à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly ()
à System.Threading.ThreadHelper.ThreadStart_Context (estado del objeto)
à System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
à System.Threading.ExecutionContext.Run (ExecutionContext executionContext, devolución de llamada ContextCallback, estado Object)
à System.Threading.ThreadHelper.ThreadStart ()
InnerException:
System.Data.Services.Client.DataServiceClientException
Mensaje = Estricto // EN "" http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">



401 - No autorizado: acceso denegado debido a credenciales no válidas.

.content-container {background: #FFF; width: 96%; margin-top: 8px; relleno: 10px; position: relative;} ->



Error del Servidor




401 - No autorizado: acceso denegado debido a credenciales no válidas.


No tiene permiso para ver este directorio o página utilizando las credenciales que ha proporcionado.





Fuente = System.Data.Services.Client
Código de estado = 401
StackTrace:
à System.Data.Services.Client.DataServiceContext.SaveResult.d__1e.MoveNext ()
InnerException:

Lo cual es extraño, porque tengo todos los derechos en mi servicio de datos WCF (y funciona con Visual Studio), y estoy en modo anónimo en IIS, por lo que debería tener todos los derechos para ejecutar esta consulta. IIS_USR tiene CONTROL COMPLETO en la carpeta web, así que realmente no veo cuál puede ser el problema


Acabo de arreglar el mío dando "control total" a la cuenta "IUSR" para la carpeta WCF. Eso es todo lo que hice y funcionó.


Lo hice funcionar con un usuario personalizado y ahora funciona, así que si tiene este problema, puede intentar lo siguiente en su Servidor IIS:

  1. Crear un usuario de Windows;
  2. Dale derechos de lectura / escritura / modificación / ejecución / ... en tu carpeta de servicios de datos WCF;
  3. Cree un nuevo grupo de aplicaciones con .NET 4, modo integrado y este usuario;
  4. En la autenticación del sitio web, habilite solo el modo anónimo y configure al usuario como "Identidad del grupo de aplicaciones".

Intente utilizar las funciones de suplantación del grupo de aplicaciones para el usuario que tenga permisos. He tenido muchos problemas en el pasado al usar las características predeterminadas de AppPoolIdentity de IIS 7 y, en general, asignarlo a una configuración de usuario para este fin o configurarlo para que use el servicio de red.

Lo más probable es que el conjunto no tenga los permisos adecuados para ejecutarse correctamente.