Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/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
如何通过windows live身份验证并使用CRM Odata服务?_Odata_Dynamics Crm 2011 - Fatal编程技术网

如何通过windows live身份验证并使用CRM Odata服务?

如何通过windows live身份验证并使用CRM Odata服务?,odata,dynamics-crm-2011,Odata,Dynamics Crm 2011,我现在有一个项目,需要为DynamicCRM 2011构建一个web门户。我想使用CRM odata服务,但无法通过c代码中的windows live身份验证。我还尝试用谷歌搜索一些例子。不幸的是,没有运气。我希望以前做过这件事的人能告诉我怎么做。太谢谢你了 如果您正在用C#编写代码以与Dynamics 2011进行通信,您最好使用organization服务。OData端点更适合JavaScript代码和客户端逻辑 Dynamics CRM 2011 SDK()包含如何使用Windows Li

我现在有一个项目,需要为DynamicCRM 2011构建一个web门户。我想使用CRM odata服务,但无法通过c代码中的windows live身份验证。我还尝试用谷歌搜索一些例子。不幸的是,没有运气。我希望以前做过这件事的人能告诉我怎么做。太谢谢你了

如果您正在用C#编写代码以与Dynamics 2011进行通信,您最好使用organization服务。OData端点更适合JavaScript代码和客户端逻辑


Dynamics CRM 2011 SDK()包含如何使用Windows Live ID连接到该服务的示例。下载并解压缩SDK后,首先查看\samplecode\cs\quickstart。如果您使用C编写代码,以便与Dynamics 2011通信,最好使用组织服务。OData端点更适合JavaScript代码和客户端逻辑


Dynamics CRM 2011 SDK()包含如何使用Windows Live ID连接到服务的示例。下载并解压缩SDK后,请查看\samplecode\cs\quickstart以开始使用。

检查IIS/身份验证设置

disabled - Anonymous Authentication
enabled - ASP.NET Impersonation
enabled - Windows Authentication
这是IIS将用户凭据传递到web门户所必需的。然后,您可以使用以下示例代码传递这些凭据

    public ActionResult HitCRM()
    {
        var uri = System.Configuration.ConfigurationManager.AppSettings["CRMURI"];

        ClientCredentials credentials = new ClientCredentials();
        var dinfo = ServiceConfigurationFactory.CreateConfiguration<IDiscoveryService>(new Uri(uri));
        var dsp = new DiscoveryServiceProxy(dinfo, credentials);

        dsp.Authenticate();

        var retrieveOrganizationsRequest = new RetrieveOrganizationsRequest();
        var retrieveOrganizationsResponse = dsp.Execute(retrieveOrganizationsRequest) as RetrieveOrganizationsResponse;

        if (retrieveOrganizationsResponse.Details.Count == 1)
        {
            var organizationDetail = retrieveOrganizationsResponse.Details[0];

            Uri orgServiceUri = new Uri(organizationDetail.Endpoints[EndpointType.OrganizationService]);

            IServiceConfiguration<IOrganizationService> orgConfigInfo = ServiceConfigurationFactory.CreateConfiguration<IOrganizationService>(orgServiceUri);

            var creds = new ClientCredentials();
            IOrganizationService organizationService = new OrganizationServiceProxy(orgConfigInfo, creds);

            Guid userid = ((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest())).UserId;
            var systemUser = organizationService.Retrieve("systemuser", userid, new ColumnSet(new string[] { "firstname", "lastname" }));

            // Retrieve the version of Microsoft Dynamics CRM.
            var versionRequest = new RetrieveVersionRequest();
            var versionResponse = (RetrieveVersionResponse)organizationService.Execute(versionRequest);

            ViewBag.FirstName = systemUser.GetAttributeValue<string>("firstname");
            ViewBag.LastName = systemUser.GetAttributeValue<string>("lastname");
            ViewBag.Version = versionResponse.Version;
        }

        return View();
    }
public ActionResult HitCRM()
{
var uri=System.Configuration.ConfigurationManager.AppSettings[“CRMURI”];
ClientCredentials=新的ClientCredentials();
var dinfo=ServiceConfigurationFactory.CreateConfiguration(新Uri(Uri));
var dsp=新发现服务代理(dinfo,凭证);
dsp.Authenticate();
var retrieveOrganizationsRequest=新的retrieveOrganizationsRequest();
var retrieveOrganizationsResponse=dsp.Execute(retrieveOrganizationsRequest)作为retrieveOrganizationsResponse;
如果(retrieveOrganizationsResponse.Details.Count==1)
{
var organizationDetail=retrieveOrganizationsResponse.Details[0];
Uri orgServiceUri=新Uri(organizationDetail.Endpoints[EndpointType.OrganizationService]);
IServiceConfiguration orgConfigInfo=ServiceConfigurationFactory.CreateConfiguration(orgServiceUri);
var creds=new ClientCredentials();
IOOrganizationService organizationService=新的OrganizationServiceProxy(orgConfigInfo,creds);
Guid userid=((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest()).userid;
var systemUser=organizationService.Retrieve(“systemUser”,userid,new ColumnSet(新字符串[]{“firstname”,“lastname”}));
//检索Microsoft Dynamics CRM的版本。
var versionRequest=new RetrieveVersionRequest();
var versionResponse=(RetrieveVersionResponse)organizationService.Execute(versionRequest);
ViewBag.FirstName=systemUser.GetAttributeValue(“FirstName”);
ViewBag.LastName=systemUser.GetAttributeValue(“LastName”);
ViewBag.Version=versionResponse.Version;
}
返回视图();
}

检查您的IIS/身份验证设置

disabled - Anonymous Authentication
enabled - ASP.NET Impersonation
enabled - Windows Authentication
这是IIS将用户凭据传递到web门户所必需的。然后,您可以使用以下示例代码传递这些凭据

    public ActionResult HitCRM()
    {
        var uri = System.Configuration.ConfigurationManager.AppSettings["CRMURI"];

        ClientCredentials credentials = new ClientCredentials();
        var dinfo = ServiceConfigurationFactory.CreateConfiguration<IDiscoveryService>(new Uri(uri));
        var dsp = new DiscoveryServiceProxy(dinfo, credentials);

        dsp.Authenticate();

        var retrieveOrganizationsRequest = new RetrieveOrganizationsRequest();
        var retrieveOrganizationsResponse = dsp.Execute(retrieveOrganizationsRequest) as RetrieveOrganizationsResponse;

        if (retrieveOrganizationsResponse.Details.Count == 1)
        {
            var organizationDetail = retrieveOrganizationsResponse.Details[0];

            Uri orgServiceUri = new Uri(organizationDetail.Endpoints[EndpointType.OrganizationService]);

            IServiceConfiguration<IOrganizationService> orgConfigInfo = ServiceConfigurationFactory.CreateConfiguration<IOrganizationService>(orgServiceUri);

            var creds = new ClientCredentials();
            IOrganizationService organizationService = new OrganizationServiceProxy(orgConfigInfo, creds);

            Guid userid = ((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest())).UserId;
            var systemUser = organizationService.Retrieve("systemuser", userid, new ColumnSet(new string[] { "firstname", "lastname" }));

            // Retrieve the version of Microsoft Dynamics CRM.
            var versionRequest = new RetrieveVersionRequest();
            var versionResponse = (RetrieveVersionResponse)organizationService.Execute(versionRequest);

            ViewBag.FirstName = systemUser.GetAttributeValue<string>("firstname");
            ViewBag.LastName = systemUser.GetAttributeValue<string>("lastname");
            ViewBag.Version = versionResponse.Version;
        }

        return View();
    }
public ActionResult HitCRM()
{
var uri=System.Configuration.ConfigurationManager.AppSettings[“CRMURI”];
ClientCredentials=新的ClientCredentials();
var dinfo=ServiceConfigurationFactory.CreateConfiguration(新Uri(Uri));
var dsp=新发现服务代理(dinfo,凭证);
dsp.Authenticate();
var retrieveOrganizationsRequest=新的retrieveOrganizationsRequest();
var retrieveOrganizationsResponse=dsp.Execute(retrieveOrganizationsRequest)作为retrieveOrganizationsResponse;
如果(retrieveOrganizationsResponse.Details.Count==1)
{
var organizationDetail=retrieveOrganizationsResponse.Details[0];
Uri orgServiceUri=新Uri(organizationDetail.Endpoints[EndpointType.OrganizationService]);
IServiceConfiguration orgConfigInfo=ServiceConfigurationFactory.CreateConfiguration(orgServiceUri);
var creds=new ClientCredentials();
IOOrganizationService organizationService=新的OrganizationServiceProxy(orgConfigInfo,creds);
Guid userid=((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest()).userid;
var systemUser=organizationService.Retrieve(“systemUser”,userid,new ColumnSet(新字符串[]{“firstname”,“lastname”}));
//检索Microsoft Dynamics CRM的版本。
var versionRequest=new RetrieveVersionRequest();
var versionResponse=(RetrieveVersionResponse)organizationService.Execute(versionRequest);
ViewBag.FirstName=systemUser.GetAttributeValue(“FirstName”);
ViewBag.LastName=systemUser.GetAttributeValue(“LastName”);
ViewBag.Version=versionResponse.Version;
}
返回视图();
}

下面的链接显示windows live身份验证以及从Dynamics CRM 2011 online获取数据


希望对您有用

下面的链接显示windows live身份验证以及从Dynamics CRM 2011在线获取数据


希望对您有用

OData服务只能通过CRM Online中的代码访问。它非常适合于CRM内部的javascript(如果您需要的话,它非常有用),但是CRM服务器外部的任何代码都无法访问它

微软推荐的访问CRM Web服务的方法是通过WCF,如许多SDK示例所示

如果.NET不是您的选项,请链接到如何仅使用SOAP访问数据