【发布时间】:2019-11-29 15:26:27
【问题描述】:
我正在尝试使用 WCF 服务创建实体成员。
但是行
EntityMembersCreateResponse createResponse = clientProxy.EntityMembersCreate(createRequest);
引发以下错误:
在 mscorlib.dll 中发生“System.ServiceModel.Security.SecurityNegotiationException”类型的未处理异常
附加信息:调用者未经服务验证。**
有人可以帮我吗?
我使用以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// additional references...
using System.ServiceModel;
using System.Collections.ObjectModel;
using SAP_to_MDS.MDSTestService; // For the created service reference.
namespace SAP_to_MDS
{
class MDSConnector
{
// MDS service client proxy object.
private static ServiceClient clientProxy;
// Set the MDS URL (plus /Service/Service.svc) here.
public static string mdsURL = @"http://myhost/MDS/service/Service.svc";
public static void Connect() {
Identifier modelId = null;
string model = "PDM";
string entity = "Werks";
// "VERSION_1" is a default version name for a new model.
string version = "VERSION_1";
try
{
// Create a service proxy.
clientProxy = GetClientProxy(mdsURL);
clientProxy.ClientCredentials.UserName.UserName = "mydomain\\user";
clientProxy.ClientCredentials.UserName.Password = "mypassword";
Console.WriteLine("Connected...");
}
catch (Exception ex)
{
Console.WriteLine("Error creating a service proxy: {0}", ex);
return;
}
// Create an entity member (leaf member) with a specified name, code, and member type.
string leafMemberCode = "Code" + Guid.NewGuid().ToString("N");
string leafMemberName = "Name" + Guid.NewGuid().ToString("N");
// CreateEntityMember(model, version, entity, leafMemberName, leafMemberCode, MemberType.Leaf);
createEntityMember("PDM", "Version_1", "Werks", "Number", "1", MemberType.Leaf);
Console.ReadKey();
}
// Creates MDS service client proxy.
private static ServiceClient GetClientProxy(string targetURL)
{
// Create an endpoint address using the URL.
EndpointAddress endptAddress = new EndpointAddress(targetURL);
// Create and configure the WS Http binding.
WSHttpBinding wsBinding = new WSHttpBinding();
// Create and return the client proxy.
return new ServiceClient(wsBinding, endptAddress);
}
// Create an entity member with a specified name, code, and member type.
private static void createEntityMember(string modelName, string version, string entityName, string newName, string newCode, MemberType memberType)
{
EntityMembersCreateRequest createRequest = new EntityMembersCreateRequest();
createRequest.Members = new EntityMembers();
createRequest.ReturnCreatedIdentifiers = true;
createRequest.Members.ModelId = new Identifier { Name = modelName };
createRequest.Members.VersionId = new Identifier { Name = version };
createRequest.Members.EntityId = new Identifier { Name = entityName };
createRequest.Members.MemberType = memberType;
createRequest.Members.Members = new System.Collections.ObjectModel.Collection<Member> { };
Member newMember = new Member();
newMember.MemberId = new MemberIdentifier() { Name = newName, Code = newCode, MemberType = memberType };
createRequest.Members.Members.Add(newMember);
EntityMembersCreateResponse createResponse = clientProxy.EntityMembersCreate(createRequest);
//HandleErrors(createResponse.OperationResult);
}
}
}
【问题讨论】:
标签: c# wcf sql-server-2016 master-data-services