Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用C编辑带有Microsoft UDDI3 API的UDDI提供程序,并且您不是提供程序所有者_Api_Dll_Provider_Owner_Uddi - Fatal编程技术网

无法使用C编辑带有Microsoft UDDI3 API的UDDI提供程序,并且您不是提供程序所有者

无法使用C编辑带有Microsoft UDDI3 API的UDDI提供程序,并且您不是提供程序所有者,api,dll,provider,owner,uddi,Api,Dll,Provider,Owner,Uddi,我已经配置了一台Biztalk服务器来运行Microsfot UDDI服务器。我将一个Active Directory组配置为UDDI的管理员组 当我使用UDDI Web用户界面时,我可以创建提供者,也可以使用“查看拥有的数据”按钮查看其他用户拥有的数据提供者、tModel等 我使用C中的Microsoft.Uddi3.dll API创建了一个Windows窗体对话框来管理客户端远程应用程序中的UDDI条目,我可以使用它查看其他用户创建的提供者,但是,对其他用户拥有的提供者所做的任何修改都会抛出

我已经配置了一台Biztalk服务器来运行Microsfot UDDI服务器。我将一个Active Directory组配置为UDDI的管理员组

当我使用UDDI Web用户界面时,我可以创建提供者,也可以使用“查看拥有的数据”按钮查看其他用户拥有的数据提供者、tModel等

我使用C中的Microsoft.Uddi3.dll API创建了一个Windows窗体对话框来管理客户端远程应用程序中的UDDI条目,我可以使用它查看其他用户创建的提供者,但是,对其他用户拥有的提供者所做的任何修改都会抛出Microsoft.Uddi3.UserMismatchException实体uddi:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx-xxxxxxxxxxxx不属于发布者,因为我不是真正的所有者,即使我是uddi中的管理员。如果我对自己创建的提供程序使用它,则该版本工作正常。当我的用户不是创建提供程序的用户时,就会出现问题

我看到Web UI在UDDI.Web.DLL下使用了一个名为ViewAsPublisher.Setstring username的方法,该方法设置了您希望查看其数据的用户所有者,但我在客户端计算机上使用了该方法,但结果不成功。我认为这个DLL是为了在服务器中使用而开发的,在客户端中没有使用的意义,但是我需要一些类似于Web用户界面中允许的功能

Microsoft.Uddi3.dll还提供了转移所有权的功能,但我只需要具有与Web UI中相同的行为,我的意思是直接修改提供程序,就像我是真正的所有者一样,只要我属于管理员、发布者或协调者组

我不知道这是配置问题,还是UDDI3API方法的限制

有人能帮我吗


提前感谢

下面是我们用来修改提供者名称和描述的代码,例如

我们使用_connection参数,该参数与以下信息一起使用:

    private void ConnectToUddi()
    {
        if (!uddiServer.EndsWith("/"))
            uddiServer = uddiServer + "/";
        string inquireURL = uddiServer + "inquire.asmx";
        string publishURL = uddiServer + "publish.asmx";
        string extensionURL = uddiServer + "extension.asmx";

        UddiSiteLocation location = new UddiSiteLocation(inquireURL, publishURL, extensionURL);
        _connection = new UddiConnection(location);
        _connection.AutoGetAuthToken = true;
        _connection.AuthenticationMode = AuthenticationMode.WindowsAuthentication;
    }
然后,此处使用连接:

            BusinessEntity entity = tree.SelectedNode.Tag as BusinessEntity;
            GetBusinessDetail businessDetails = new GetBusinessDetail(entity.BusinessKey);
            BusinessDetail businessDet = businessDetails.Send(_connection);
            if (businessDet != null && businessDet.BusinessEntities.Count > 0)
            {
                BusinessEntity be = businessDet.BusinessEntities[0];
                ProviderProperties providerProperties = new ProviderProperties(be);
                if (providerProperties.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    be.Names[0].Text = providerProperties.ProviderName;
                    if (providerProperties.ProviderDescription.Length > 0)
                    {
                        Description description = new Description(providerProperties.ProviderDescription);
                        be.Descriptions.Clear();
                        be.Descriptions.Add(description);
                    }
                    else
                        be.Descriptions.Clear();
                    SaveBusiness saveBusiness = new SaveBusiness(be);
                    saveBusiness.Send(_connection);

                    BeginRefresh();  
                }
            }
它适用于我创建的提供程序,但当其他用户尝试修改我的提供程序名称(例如)并使用API时,它会抛出Microsoft.Uddi3.UserMismatchException


谢谢

大卫,听起来这是故意的。Ms Uddi确实支持访问控制规则。您必须提醒权限或以管理员身份登录,才能更改您不拥有的记录

你能发布一段代码片段吗?听起来你的客户没有正确或根本没有进行身份验证。平日南方机制是iis设置为感谢你的间谍!问题是我使用UDDI Windows身份验证以管理员身份登录,但是API检测到即使我是管理员,我也不是真正的所有者,并且发生了异常。在Web UI中,我在核心UDDI DLL中看到了一个名为ViewAsPublisher.Setusername的方法,使用该方法,Web UI可以管理由其他用户创建的提供者,而不是由我所有,因为我是管理员。但这只允许在Web中使用,例如在客户端应用程序中不使用API。可能值得尝试使用trust account for delegation标志。我认为代码中有一个选项,谢谢!我已经通过委托标志的信任帐户进行了调查,以将运行UDDI服务应用程序池的计算机/用户放入该标志。我尝试在Active Directory中使用计算机选项,但没有成功。你提到的代码中的选项在哪里?我想是调用模拟用户。我对ms Uddi库不是非常熟悉。如果这不起作用,你可能需要用户的身份证明。最后,一张微软的票被打开了,他们说通过微软的Uddi库是不可能的。