我创建了一个访问CRM的Web服务的应用程序.问题是,当我将dll部署到Sharepoint服务器时,它未经授权就返回错误401.显然System.Net.CredentialCache.DefaultCredentials不起作用(我的怀疑).这是代码.
CrmSdk.CrmAuthenticationToken token = new CrmSdk.CrmAuthenticationToken(); token.AuthenticationType = AuthenticationType.AD; token.OrganizationName = ORGANIZATION_NAME; CrmService service = new CrmService(); service.Url = "http://crmserver:5555/mscrmservices/2007/crmservice.asmx"; service.CrmAuthenticationTokenValue = token; service.PreAuthenticate = true; service.Credentials = System.Net.CredentialCache.DefaultCredentials;
反之亦然.
当我创建访问Sharepoint的webservice(编写插件)并将其部署到CRM服务器的应用程序时.它无法访问Sharepoint的Web服务.未经授权的错误.这是代码:
Lists listService = new Lists(); listService.PreAuthenticate = true; listService.Credentials = System.Net.CredentialCache.DefaultCredentials; listService.Url = "http://sharepointserver/webname/_vti_bin/Lists.asmx";
我的CRM服务器和Sharepoint服务器位于同一个域中.
对于这两个代码,如果我将凭证部分更改为类似的内容然后将其部署在服务器上,它就可以运行.
service.Credentials = new NetworkCredential("username", "password", "domain");
不过,我不想这样做,因为它在代码中显示了用户的密码.愿有人帮帮我吗?
两台服务器中的IIS都不允许匿名访问,它使用集成Windows身份验证.
谢谢
从我的本地计算机,我可以访问CRM Web服务或Sharepoint Web服务.我想我已获得授权,因为DefaultCredentials发送了我的凭据,其密码保存在" 存储的用户名和密码 "中(控制面板>用户帐户>选项卡高级>管理密码)这样,我不必输入:
service.Credentials = new NetworkCredential("username", "password", "domain");
我的本地comp的DefaultCredentials被授权访问Web服务.
我尝试在访问CRM Web服务的Sharepoint服务器上实现此功能.和..tadaa ..它将无法正常工作.哈哈哈..
我们可以将凭据注入服务器中的DefaultCredentials吗?
我要做的最后一件事是硬编码useraccount(就像上面的代码一样)