gpt4 book ai didi

c# - WCF 数据服务更新返回 401-未经授权 : Access is denied due to invalid credentials

转载 作者:行者123 更新时间:2023-11-30 22:43:11 24 4
gpt4 key购买 nike

我有一个 WCF 数据服务,我正在尝试在 DataServiceContext 客户端上使用 UpdateObject 方法。当我调用 SaveChanges 方法时,出现以下错误页面:

Unauthorized: Access is denied due to invalid credentials
You do not have permission to view this directory or page using the credentials that you supplied.

有人知道我该如何解决这个问题吗?我找到了 this ,这在理论上可以解决问题,但设置此磁盘访问权限对于生产服务来说并不是一个现实的解决方案。请记住,在我的本地计算机上运行此 WCF 数据服务时,它工作得很好。我调用的 C# 代码如下:

        public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection)
{
var userName = ( string ) context[ "UserName" ];
var isAuthenticated = ( bool ) context[ "IsAuthenticated" ];
if (userName != null && userName.Length >= 1 && collection.Count >= 1)
{
var allNames = string.Empty;
var allValues = string.Empty;
byte[] buf = null;
PrepareDataForSaving( ref allNames, ref allValues, ref buf, true, collection, isAuthenticated );
if (allNames.Length != 0)
{
var client = GetDataContext( );
var profile = client.ProfileViews.Where(p => p.UserName == userName).FirstOrDefault();
if (profile == null)
{
profile = new ProfileView() { UserName = userName };
client.AddToProfileViews(profile);
}
profile.PropertyNames = allNames;
profile.PropertyValuesString = allValues;
profile.PropertyValuesBinary = buf;
profile.LastUpdateDate = DateTime.UtcNow;


client.UpdateObject(profile);
client.SaveChanges( );
}
}
}

最佳答案

我在使用 WCF 数据服务的 Silverlight 应用程序中遇到了类似的问题。用户可以查看应用程序中的数据——来自数据库的 SELECTS 正在运行——但他们收到相同的“401 - 未授权:由于凭据无效,访问被拒绝。”您正在描述他们何时尝试将更改保存到数据库(即,在代码中执行 SaveChanges 时)。根本问题最终成为 IIS 应用程序文件夹本身的权限问题。要修复,我们必须授予 WCF 服务正在使用的应用程序池对该文件夹的写入权限。

  1. 转到 IIS 并右键单击包含 WCF 服务的虚拟目录,然后选择管理应用程序 -> 高级设置...。记下应用程序池名称。

  2. 在同一个右键单击菜单中,选择“编辑权限”......在“安全”选项卡上,检查组和用户名。

  3. 如果缺少应用程序池的名称。使用名称格式“IIS APPPOOL\MyApplicationPoolName”添加它。请参阅此有用的链接:http://www.bluevalleytech.com/techtalk/blog/assigning-ntfs-folder-permission-to-iis7-application-pools/

  4. 确保 MyApplicationPoolName 具有写入权限(我们实际上给了它完全控制权)

关于c# - WCF 数据服务更新返回 401-未经授权 : Access is denied due to invalid credentials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com