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

需要在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 = "[email protected]"; \\这里是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("[email protected]", 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. 在左则导航栏选中设置

3. 地缘组 -> 添加

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

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

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

1. 登录 Windows Azure 管理门户

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

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

3. 新建存储账户

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

4. 输入如下信息,创建存储账户

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

Note: 取消“启用地域复制”能提高性能,如在生产环境下,请保留

三、在Windows Azure中注册DNS服务

Windows Azure 中虚拟机的IP都是动态分配的,如果不注册DNS的话,它将使用Windows Azure默认提供的DNS服务, 动态为我们分配一个DNS。在东亚数据中心,它和DHCP是同一个服务器(168.63.129.16)。这对于我们搭建自己的AD,DNS,非常不利。通过注册DNS服务,Windows Azure将动态DNS指向我们指定的IP地址(10.0.0.4),而10.0.0.4就正好是我即将安装的DNS服务器的IP。Windows Azure默认为第一台机器分配.4 IP,所以在此注册的IP地址为10.0.0.4。

1. 登录 Windows Azure 管理门户

2. 在左则导航栏选中网络->DNS服务器->新建

3. 在左则导航栏选中网络->DNS服务器->新建,并输入如下信息,点击创建

四、创建虚拟网络

虚拟网络和我们在本地创建虚拟机时,创建的虚拟网络是一样的,主要是为了能将我们自己的vm放到同一个自定义的IP段。

1. 登录 Windows Azure 管理门户

2. 在左则导航栏选中网络->虚拟网络->新建

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

3. 新建->虚拟网络->自定义创建

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

4. 输入名称,地缘组

5. 选择已经注册的DNS服务

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

6. 选中”CIDR”,保持默认的IP地址

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

五、在 Windows Azure中创建虚拟机

1. 在左则导航栏选中虚拟机->虚拟机实例->新建

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

2. 选择从库中创建虚拟机

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

3. 选择SharePoint Server 2013 Trial

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

4. 输入如下信息,并继续

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

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

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

参照以上步骤,创建虚拟机: OffWebApp

名称

模板

DNS

OffWebApp

SQL Server 2012 SP1 Enterprise On Windows Server 2008 R2 SP1

OffWebApp2013. cloudapp.net

创建完成后,虚拟机状态如下:

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

六、为Windows Azure VM附加额外硬盘(可选)

默认VM只有一个系统盘及一个临时数据盘(D盘),通过此操作可增加额外磁盘,以便存放数据库数据文件

1. 在Windows Azure 管理门户 附加磁盘(类似于给电脑添加新的物理磁盘)

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

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

2. 远程到服务器后,添加新磁盘并格式化

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

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

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

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

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

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

七、在Windows Azure VM中配置AD

1. 下载RDP文件,打开并远程连接到服务器(推荐使用Remote Desktop Connection Manager管理多台远程服务器)

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

2. 安装Active Directory Domain Services

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

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

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

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

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

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

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

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

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

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

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

安装完后,重启服务器,AD便已经安装成功.

参考: http://social.technet.microsoft.com/wiki/contents/articles/12370.step-by-step-guide-for-setting-up-windows-server-2012-domain-controller.aspx

3. 创建SharePoint 服务账户

- CONTOSO\spfarm – SharePoint Farm 管理员

- CONTOSO\sp_serviceapps – 运行SharePoint服务的账户

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

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

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

八、在Windows Azure VM中配置Sql Server 2012

由于这台OffWebApp VM的镜像中,已经预安装了Sql Server 2012了,故在此省略其安装步骤

1. 连接VM: OffWebApp

2. 启用命名管道

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

3. 修改默认的数据库数据文件,日志文件的路径

3.1. 在F盘新建如下目录

· F:\MSSQL Sql相关文件根目录

· F:\MSSQL\DATA Sql 数据文件目录

· F:\MSSQL\LOGS Sql日志文件目录

· F:\MSSQL\BACKUP Sql备件文件目录

3.2. 在 Sql管理器中设置默认文件路径

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

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

Note: 需要重启后,才能生效

4. 配置防火墙

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

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

5. 加入域: contoso.com

可能出现以下错误,可以忽略

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

6. 将域账户添加到Sql的管理员组

6.1. 用本机管理员: offwebapp\vmadmin登录(此时域管理员还没有权限操作数据库)

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

6.2. 将域管理员:contoso\vmadmin, SharePoint服务账户(contoso\spfarm,contoso\sp_serviceapps)加入sysadmin组

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

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

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

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

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

九、在Windows Azure VM中安装配置SharePoint 2013

由于VM本身已经预安装了SharePoint 2012,此处只需运行配置向导即可.

9.1 关闭“IE增强的安全配置”

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

9.2 运行配置向导

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

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

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

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

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

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

9.3 运行管理中心配置向导

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

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

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

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

访问http://sharepoint , 一切正常, SharePoint 2013安装完毕


你可能感兴趣的:(基于Windows Azure 安装SharePoint 2013和如何实现与CRM(Dynamics)的数据交互。)