基于Windows Azure 安装SharePoint 2013和如何实现与CRM(Dynamics)的数据交互。

本文介绍了如何在Windows Azure环境中安装SharePoint 2013,并实现与CRM(Dynamics)的数据交互。通过创建地缘组、存储账户、注册DNS服务、虚拟网络,以及配置AD和Sql Server 2012,最终完成SharePoint的安装和WebPart开发,以展示和交互CRM数据。
摘要由CSDN通过智能技术生成

需要在SharePoint online 显示 CRM online的数据,并且有交互。需要开发是肯定的。由于我的本性能有限,

所以不太可能使用本机开发,使用虚拟机发现速度太慢,于是我选择了使用 Azure。结果顺利完成任务。开发分享。

实现方案一,Azure 环境安装了完成的share point平台  二,必须有读取CRM DynamicS的权限。三,VS开发工具 开发webpart。

如果想部署到SharePoint online上,开发的项目必须是Sandbox。

使用的开发环境是:VS2013  framework 4.0 

首先在webpart 里写代码,调用CRM里的数据,是Dynamic代码,以下是webpart代码和从Dynamics 读取数据的代码。是从 SDK的示例代码里取到,当然我是获得MS CRM协助完成的。


    protected void SDKCRM()
    {
        Uri orgServiceUri = new Uri("https://xxxxxxxxx.crm5.dynamics.com/XRMServices/2011/Organization.svc");

        var clientCredentials = new ClientCredentials();
        clientCredentials.UserName.UserName = "jasondct@microsoft.com"; \\这里是CRM登录管理员的账号,如果有AD策略则可以省略
        clientCredentials.UserName.Password = "@#@#!@#$**(&&&";         \\ 这里是密码


        IOrganizationService orgService = new OrganizationServiceProxy(orgServiceUri, null, clientCredentials, null); \\获得CRM的服务
        //get current Name
        //WhoAmIRequest whoAmIReq = new WhoAmIRequest();
        //WhoAmIResponse whoAmIResponse = (WhoAmIResponse)orgService.Execute(whoAmIReq);     \\获得当前用户的
        //throw new Exception(whoAmIResponse.UserId.ToString());
        QueryExpression query = new QueryExpression("contact");
        query.ColumnSet = new ColumnSet(true);
        query.Criteria.AddCondition("createdon", ConditionOperator.NotNull);                 

        EntityCollection contactCol = orgService.RetrieveMultiple(query);                
        var contactList = contactCol.Entities;


        DataTable mydt = GetContact("jasondct@163.com", orgService);                           \\根据这个条件 获得用户数据
        string GetGUID = mydt.Rows[0]["contactid"].ToString();
        TextBox1.Text = contactCol.Entities.Count.ToString();

        DataTable myDetail= GetIncident(GetGUID, orgService);                                   
        GridView1.DataSource = myDetail;
        GridView1.DataBind();                                                                     \\显示数据
        
    }


读取CRM的方法。

/// <summary>
    /// 根据邮件地址获取联系人信息
    /// </summary>
    /// <param name="sEmail">邮件地址</param>
    /// <param name="service">CRM组织服务</param>
    /// <returns></returns>
    protected DataTable GetContact(string sEmail, IOrganizationService service)
    {
        ConditionExpression conexp1 = new ConditionExpression();
        conexp1.AttributeName = "emailaddress1";
        conexp1.Operator = ConditionOperator.Equal;
        conexp1.Values.Add(sEmail);
        FilterExpression filexp1 = new FilterExpression();
        filexp1.Conditions.Add(conexp1);
        QueryExpression quexp = new QueryExpression("contact");
        quexp.ColumnSet.AddColumns("firstname");  // 名
        quexp.ColumnSet.AddColumns("lastname");   // 姓
        quexp.ColumnSet.AddColumns("fullname");   // 全名
        quexp.ColumnSet.AddColumns("jobtitle");   // 职务
        quexp.ColumnSet.AddColumns("contactid");  // 联系人主键
        quexp.ColumnSet.AddColumns("department"); // 部门
        quexp.ColumnSet.AddColumns("emailaddress1");  // 电子邮件
        quexp.ColumnSet.AddColumns("parentcustomerid");  // 公司名称
        quexp.ColumnSet.AddColumns("mobilephone");  // 移动电话
        quexp.ColumnSet.AddColumns("telephone1");  // 商务电话
        quexp.Criteria.AddFilter(filexp1);
        EntityCollection entcolTep = service.RetrieveMultiple(quexp);
        DataTable dtContact = new DataTable("contact");
        System.Type tyString = System.Type.GetType("System.String");
        System.Type tyGuid = System.Type.GetType("System.Guid");
        DataColumn dcTep = new DataColumn("firstname", tyString);
        dtContact.Columns.Add(dcTep);
        dcTep = new DataColumn("lastname", tyString);
        dtContact.Columns.Add(dcTep);
        dcTep = new DataColumn("fullname", tyString);
        dtContact.Columns.Add(dcTep);
        dcTep = new DataColumn("jobtitle", tyString);
        dtContact.Columns.Add(dcTep);
        dcTep = new DataColumn("contactid", tyGuid);
        dtContact.Columns.Add(dcTep);
        dcTep = new DataColumn("department", tyString);
        dtContact.Columns.Add(dcTep);
        dcTep = new DataColumn("emailaddress1", tyString);
        dtContact.Columns.Add(dcTep);
        dcTep = new DataColumn("parentcustomerid", tyString);
        dtContact.Columns.Add(dcTep);
        dcTep = new DataColumn("mobilephone", tyString);
        dtContact.Columns.Add(dcTep);
        dcTep = new DataColumn("telephone1", tyString);
        dtContact.Columns.Add(dcTep);
        int iCount = entcolTep.Entities.Count;
        for (int i = 0; i < iCount; i++)
        {
            DataRow drTep = dtContact.NewRow();
            if (entcolTep.Entities[i].Attributes.Contains("firstname"))
            {
                drTep["firstname"] = entcolTep.Entities[i].Attributes["firstname"];
            }
            if (entcolTep.Entities[i].Attributes.Contains("lastname"))
            {
                drTep["lastname"] = entcolTep.Entities[i].Attributes["lastname"];
            }
            drTep["fullname"] = entcolTep.Entities[i].Attributes["fullname"];
            if (entcolTep.Entities[i].Attributes.Contains("jobtitle"))
            {
                drTep["jobtitle"] = entcolTep.Entities[i].Attributes["jobtitle"];
            }
            if (entcolTep.Entities[i].Attributes.Contains("department"))
            {
                drTep["department"] = entcolTep.Entities[i].Attributes["department"];
            }
            if (entcolTep.Entities[i].Attributes.Contains("mobilephone"))
            {
                drTep["mobilephone"] = entcolTep.Entities[i].Attributes["mobilephone"];
            }
            if (entcolTep.Entities[i].Attributes.Contains("telephone1"))
            {
                drTep["telephone1"] = entcolTep.Entities[i].Attributes["telephone1"];
            }
            if (entcolTep.Entities[i].Attributes.Contains("parentcustomerid"))
            {
                drTep["parentcustomerid"] = ((EntityReference)entcolTep.Entities[i].Attributes["parentcustomerid"]).Name;
            }
            drTep["contactid"] = (Guid)entcolTep.Entities[i].Attributes["contactid"];
            drTep["emailaddress1"] = entcolTep.Entities[i].Attributes["emailaddress1"];
            dtContact.Rows.Add(drTep);
        }
        dtContact.AcceptChanges();
        return dtContact;
    }


下面是详细介绍了如何在Azure 安装 Sharepoint 2013 系统

一、在Windows Azure中创建地缘组

“地缘组”是在您的 Windows Azure 订阅中对需要一起工作以便实现最佳性能的服务进行分组的方式。 简单点说,Windows Azure有很多数据中心,你所创建的VM有可能会运行在不同的数据中心的不同集群上。试想一下,如果你的SharePoint Farm的数据库服务器和App服务器分别运行的南美和东亚的数据中心,这时的性能肯定好不了。为能保证这两台VM能运行在同一个数据中心的同一个集群上,以提高性能,就需要有“地缘组”这样的一个东西能把你创建的VM打包成一个整体,并把这一个整体的服务同时运行在一个集群上。

1. 登录 Windows Azure 管理门户

2. 在左则导航栏选中设置

clip_image001

3. 地缘组 -> 添加

clip_image002

4. 输入名称、描述、数据中心,并点击确实

clip_image004

Note: 东亚数据中心在香港,推荐选东亚数据中心

二、在Windows Azure中创建存储账户

1. 登录 Windows Azure 管理门户

2. 在左则导航栏选中存储

clip_image005

3. 新建存储账户

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值