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

本文关键字:IIS 我的 WCF 服务 数据 授权 | 更新日期: 2023-09-27 18:06:02

我开发了一个WCF数据服务,它运行良好,我可以通过它做任何我想做的操作。

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

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

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

当我尝试编辑数据时,我得到这个错误:

System.Data.Services.Client。DataServiceRequestException未处理
消息=一个错误将导致错误处理requete。
源= 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(实体实体)数据D: ' Workspace ' 10067。GfK
Telecontrol.TOM ' ' V3.1 ' WSTester释放' Program.cs:线90
WSTester.Program。Main(String[] argsD: ' Workspace ' 10067。捷孚凯Telecontrol.TOM ' ' V3.1 ' WSTester释放' Program.cs:线23
System.AppDomain._nExecuteAssembly (RuntimeAssemblyassembly, String[] args)
System.AppDomain。assemblyFile ExecuteAssembly(字符串,证据集合安全,字符串[]args)
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly ()
System.Threading.ThreadHelper.ThreadStart_Context(对象状态)
System.Threading.ExecutionContext.Run (ExecutionContextexecutionContext, ContextCallback, callback,对象状态,布尔值ignoreSyncCtx)
System.Threading.ExecutionContext.Run (ExecutionContextexecutionContext, ContextCallback, callback, Object state)
System.Threading.ThreadHelper.ThreadStart ()
InnerException:
System.Data.Services.Client.DataServiceClientException
消息=严格的//EN " http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">



401 -未授权:由于无效而拒绝访问凭证。

.content-container{背景:# FFF;宽度:96%;margin-top: 8 px;填充:10 px;位置:相对;}——>



<标题>服务器错误


401 - Unauthorized:由于无效而拒绝访问凭证。


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





源= System.Data.Services.Client
StatusCode = 401
加:
System.Data.Services.Client.DataServiceContext.SaveResult.d__1e.MoveNext ()
InnerException:

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

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

我刚刚通过给WCF文件夹的"IUSR"帐户"完全控制"来固定我的。

尝试对具有权限的用户使用应用程序池的模拟功能。我在过去使用IIS 7的默认AppPoolIdentity功能时遇到了很多问题,通常将其分配给为此目的的用户设置或将其设置为使用networkservice。

很可能是池没有适当的权限来正常执行

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

  1. 创建windows用户;
  2. 给它读/写/修改/执行/…WCF数据服务文件夹的权限;
  3. 用。net 4,集成模式,和这个用户创建一个新的应用程序池;
  4. 在对网站进行认证时,只启用匿名模式,并设置用户为"应用池身份"。