我在一个域上安装了CRM 2011,并且在一个单独的域上有一个Web服务器(服务器2008),其中Web服务器托管一个MVC 3网站,该网站试图访问在CRM服务器上发布的服务。
我正在使用通过运行CrmSvcUtil创建的早期绑定实体类。
我的问题是当我尝试使用来自Web服务器上的代码的服务时,我收到“由于身份验证失败而无法满足安全令牌的请求”异常。
如果我的CRM安装是在内部实际上是否可以从单独的域上的另一台机器连接而不安装CRM作为IFD?
我使用凭据来呼叫服务......
public override bool ValidateUser(string username, string password)
{
var credentials = SecurityHelper.BuildClientCredentials(_crmUsername, _crmPassword, _domain);
using (_serviceProxy = new OrganizationServiceProxy(new Uri(_organisationUri), null, credentials, null))
{
if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
{
_serviceProxy.EnableProxyTypes();
using (var orgContext = new XrmServiceContext(_serviceProxy))
{......
我的帮助班创建凭证.....
public class SecurityHelper
{
public static ClientCredentials BuildClientCredentials(string username, string password, string domain)
{
var credentials = new ClientCredentials();
credentials.Windows.ClientCredential = new System.Net.NetworkCredential(username, password, domain);
credentials.UserName.UserName = username;
credentials.UserName.Password = password;
return credentials;
}
}
就应用程序池而言,由于Web服务器位于不同的域,我可以从CRM框中应用用户帐户吗?
答案 0 :(得分:0)
是的,你应该能够做到这一点。用户是否在CRM中运行MVC站点的应用程序池?或者您是否为CRM调用提供凭证?
答案 1 :(得分:0)
我们一直有同样的问题。如果我们通过代理创建服务,它就行不通。
但是,如果在localContext中传入IOrganizationService引用并使用它而不是代理方法,则可以使其工作。
Afaik,代理创建的目的是在应用程序之外连接到CRM。在插件中,microsoft为您提供了crud所需的所有对象引用。
(有没有人能够在插件中创建服务代理并实际让它工作????)