MS CRM 2011 C#中获取Web Resource

 

原创地址:http://www.cnblogs.com/jfzhu/archive/2013/02/15/2913077.html

转载请注明出处

 

我在以前的文章中讲过如何用JScript读取web resource资源,我在本文中将要讲解如何在C#中获取web resource资源。

 

有时候可能有这样的需求,你需要在一个插件中读取某个xml web resource的内容,并将该xml文件作为附件创建一封E-mail。或者该xml文档是插件的一个配置文件。这时,你就需要在C#中获取web resource资源了。CRM中web resource不过是一个特殊的entity,在数据库中你也可以看到web resource table。web resource的内容(content)以Base64编码保存在数据库中(参见Base 64 Encoding 编码)。你只需要知道web resource的name,然后就可以用RetrieveMultiple方法获取该web resource。下面的代码演示了,如何获取一个名为aw_testxml.xml的web resource,并将其内容作为附件发送给一封E-mail。

// Create an e-mail message.    
// Create the 'From:' activity party for the email 
ActivityParty fromParty = new ActivityParty 
{ 
    PartyId = new EntityReference(SystemUser.EntityLogicalName, new Guid("F6F5BB29-D519-E211-B109-B499BAFDBEDA")) 
};

// Create the 'To:' activity party for the email 
ActivityParty toParty = new ActivityParty 
{ 
    PartyId = new EntityReference(SystemUser.EntityLogicalName, new Guid("F6F5BB29-D519-E211-B109-B499BAFDBEDA")) 
};


Email email = new Email 
{ 
    To = new ActivityParty[] { toParty }, 
    From = new ActivityParty[] { fromParty }, 
    Subject = "SDK Sample e-mail", 
    Description = "SDK Sample for SendEmail Message.", 
    DirectionCode = true 
}; 
Guid _emailId = service.Create(email);

QueryExpression mySavedQuery = new QueryExpression 
{ 
    ColumnSet = new ColumnSet(true), 
    EntityName = WebResource.EntityLogicalName, 
    Criteria = new FilterExpression() 
    { 
        Conditions = 
        {                        
            new ConditionExpression 
            { 
                AttributeName = "name", 
                Operator = ConditionOperator.Equal, 
                Values = {"aw_testxml.xml"} 
            } 
        } 
    } 
};

EntityCollection ec = service.RetrieveMultiple(mySavedQuery); 
if (ec != null && ec.Entities != null && ec.Entities.Count > 0) 
{ 
    WebResource webresource = ec.Entities[0].ToEntity<WebResource>(); 
                         
    ActivityMimeAttachment _sampleAttachment = new ActivityMimeAttachment 
    { 
        ObjectId = new EntityReference(Email.EntityLogicalName, _emailId), 
        ObjectTypeCode = Email.EntityLogicalName, 
        Subject = "Sample Attachment", 
        Body = webresource.Content, 
        FileName = "ExampleAttachment.xml" 
    };

    service.Create(_sampleAttachment); 
}

 

 

posted @ 2013-02-15 23:59  Coding十日谈  阅读(1042)  评论(0编辑  收藏  举报