MS crm帐户创建:System.Net.WebException:请求失败,HTTP状态为401:未授权

时间:2010-11-19 13:53:39

标签: dynamics-crm dynamics-crm-4

我正在使用 我登录到远程服务器以访问Visual Studio以及MS CRM。我从SDK中获取了示例代码并尝试运行代码:

CrmAuthenticationToken token = new CrmAuthenticationToken();

token.AuthenticationType = 0;

token.OrganizationName = "AdventureWorksCycle";

CrmService service = new CrmService();
service.Url= "http://10.16.16.205:5555/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;

service.Credentials = new System.Net.NetworkCredential"username", "password", "domain");

// Create the account object.
account account = new account();

// Set the properties of the account object.
account.name = "Fourth Coffee123";
account.address1_line1 = "29 Market St.";
account.address1_city = "Sam";
account.address1_stateorprovince = "MT1";
account.address1_postalcode = "9999";
account.donotbulkemail = new CrmBoolean();
account.donotbulkemail.Value = true;

// Create the target object for the request.
TargetCreateAccount target = new TargetCreateAccount();

// Set the properties of the target object.
target.Account = account;

// Create the request object.
CreateRequest create = new CreateRequest();

// Set the properties of the request object.
create.Target = target;

// Execute the request.
CreateResponse created = (CreateResponse)service.Execute(create);

我正在使用Crm Web Service,但它抛出异常:

异常详细信息:

  

System.Net.WebException:请求   HTTP状态401失败:   未经授权的

     

来源错误:

Line 114: [return: System.Xml.Serialization.XmlElementAttribute("Response")]

Line 115: public Response Execute(Request Request) {

Line 116: ***object[] results = this.Invoke("Execute", new object[]* {**

Line 117: Request});

Line 118: return ((Response)(results[0]));

1 个答案:

答案 0 :(得分:0)

您缺少的一件事是真实的用户名和密码。我假设你为了这个问题已经省略了这个。

您是否检查了用于Web服务调用的用户的安全角色?如果您还没有,请将此用户添加到系统管理员角色。

经常使用CRM,这个错误与安全性无关,而是与其他事情无关。

首先启用CRM跟踪并查看。这将为您提供更多错误细节。这是如何做: http://support.microsoft.com/kb/907490

此外,您可以尝试使用我的异常格式化程序来获取有关错误的更多详细信息。这是一个扩展类,允许您格式化异常并将其打印到stdout或http响应。在这里找到它: http://paste.ly/5Y66

以这种方式使用:

try {
   // do all your stuff
} catch (Exception ex) {
   ex.Print();
}

请注意,在格式化的异常输出中,您可以看到反序列化的“详细信息”属性,以便您可以看到文本版本。这就是CRM在大多数情况下隐藏真实异常的地方。