在IIS上尝试我的WCF数据服务时得到“401 – 未经授权”

我开发了一个运行良好的WCF数据服务,我可以完成我想要的每个操作。

我开发了一个小型的c#客户端来测试所有function:添加,删除,修改,检索数据。

在我的visual studio服务器上一切正常,但是一旦我在IIS服务器上:

  • 我可以添加/检索数据
  • 我无法编辑数据

当我尝试编辑数据时,我收到此错误:

System.Data.Services.Client.DataServiceRequestException未处理
消息= Une erreur s’est produite lors du traitement decetterequête。
来源= System.Data.Services.Client
堆栈跟踪:
àSystem.Data.Services.Client.DataServiceContext.SaveResult.HandleBatchResponse()
àSystem.Data.Services.Client.DataServiceContext.SaveResult.EndRequest()
àSystem.Data.Services.Client.DataServiceContext.SaveChanges(SaveChangesOptions选项)
àSystem.Data.Services.Client.DataServiceContext.SaveChanges()
àWSTester.Program.ModifySomeThings(实体实体)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(RuntimeAssembly assembly,String [] args)
àSystem.AppDomain.ExecuteAssembly(String assemblyFile,Evidence assemblySecurity,String [] args)
àMicrosoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
àSystem.Threading.ThreadHelper.ThreadStart_Context(对象状态)
àSystem.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态,布尔值ignoreSyncCtx)
àSystem.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态)
àSystem.Threading.ThreadHelper.ThreadStart()
的InnerException:
System.Data.Services.Client.DataServiceClientException
消息=严格// EN“”http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>

401 – 未授权:由于凭据无效,访问被拒绝。

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

服务器错误

401 – 未授权:由于凭据无效,访问被拒绝。

您无权使用您提供的凭据查看此目录或页面。

来源= System.Data.Services.Client
的StatusCode = 401
堆栈跟踪:
àSystem.Data.Services.Client.DataServiceContext.SaveResult.d__1e.MoveNext()
的InnerException:

这很奇怪,因为我在我的WCF数据服务中拥有所有权利(并且它适用于visual studio),并且我在IIS中处于匿名模式,因此我应该拥有运行此查询的所有权限。 IIS_USR对Web文件夹有完全控制,所以我真的不知道可能是什么问题

尝试将应用程序池的模拟function用于具有权限的用户。 我过去使用IIS 7的默认AppPoolIdentityfunction遇到了很多问题,并且通常将其分配给用户设置用于此目的或将其设置为使用网络服务。

池很可能没有正确执行的适当权限。

我只是通过对WCF文件夹的“IUSR”帐户进行“完全控制”来修复我的问题。 这就是我所做的一切,并且有效。

我让它与自定义用户一起运行,现在它可以工作,所以如果你有这个问题,你可以在IIS服务器上尝试以下方法:

  1. 创建一个Windows用户;
  2. 在WCF数据服务文件夹上赋予它读/写/修改/执行/ …权限;
  3. 使用.NET 4,集成模式和此用户创建新的应用程序池;
  4. 在网站身份validation上,仅启用匿名模式,并将用户设置为“应用程序池标识”。