Thursday, January 10, 2013

Error occurred in deployment step 'Recycle IIS Application Pool': The communication object, System.ServiceModel.InstanceContext, cannot be used for communication

Hi All,


When deploying a solution to SharePoint 2010, I suddenly got the error message:
Error occurred in deployment step ‘Recycle IIS Application Pool’: The communication object, System.ServiceModel.InstanceContext, cannot be used for communication because it has been Aborted.
Restarting Visual Studio did the trick. (IISreset did not help..)

Wednesday, January 9, 2013

SharePoint 2010 Web Part Error "The UserCodeToken is invalid"


Hi All,

The error says "Unhandled exception was thrown by the sandboxed code wrapper's Execute method in the partial trust app domain: The UserCodeToken is invalid". While this error message is very descriptive, it wasn't very helpful in determining a solution. No events in the error
​
 Update: Sandboxed solutions not working, try restarting the service in powershell "Restart-Service SPUsercodeV4"

Monday, January 7, 2013

Populate Drop Down Lists in Client Object Model

Hi All,

SharePoint 2010 provided two major custom web part enhancements: Visual Web Parts and Client Side Object Model (COM) using JavaScript. We can populate a dropdown items from a sharepoint list.

First populate a list for example : InterviewerList

In visual webpart add following tag in .ascx file inside a DIV tag :

<select id="ddlInterviewerName">

</select>

Then jump to your .js file and write following code :



jQuery(document).ready(function () {

    ExecuteOrDelayUntilScriptLoaded(function () {
        obj = new ScheduleInterviewClass();
        obj.LoadObjects();
    }, "sp.js");
});


function ScheduleInterviewClass() {

    this.LoadObjects = LoadObjects;

    var siteObjects = {
        ctx: null,
        web: null,
        url: null,
        InterviewerList: null,
        InterviewerListItems: null
    };

    
    function LoadObjects() {
        siteObjects.ctx = SP.ClientContext.get_current();
        siteObjects.web = siteObjects.ctx.get_web();
        siteObjects.ctx.load(siteObjects.web);
        siteObjects.ctx.executeQueryAsync(Function.createDelegate(this, LoadObjectsOnSuccess), Function.createDelegate(this, LoadObjectsOnFailure));
    }

    function LoadObjectsOnSuccess() {

        siteObjects.InterviewerList = siteObjects.web.get_lists().getByTitle("InterviewerList");      
        var query = new SP.CamlQuery();
        query.set_viewXml();

        siteObjects.InterviewerListItems = siteObjects.InterviewerList.getItems(query);

        siteObjects.ctx.load(siteObjects.InterviewerListItems);
        siteObjects.ctx.executeQueryAsync(Function.createDelegate(null, RenderHtmlOnSuccess), Function.createDelegate(null, RenderHtmlOnFailure));
    }

    function LoadObjectsOnFailure() {
        alert("Objects Not Loaded Properly. Try again");
    }

    function RenderHtmlOnSuccess() {
        var ddlInterviewer = this.document.getElementById("ddlInterviewerName");
        ddlInterviewer.options.length = 0;
        var enumerator = siteObjects.InterviewerListItems.getEnumerator();

        while (enumerator.moveNext()) {
            var currentItem = enumerator.get_current();
            ddlInterviewer.options[ddlInterviewer.options.length] = new Option(currentItem.get_item("InterviewerName").get_lookupValue(), currentItem.get_item("ID"));                    
        }
    }


    function RenderHtmlOnFailure(sender, args) {
        alert(args.get_message());
        alert("Not able to render HTML");
    }



}


Sunday, January 6, 2013

How To Add Custom Web Part Properties To Visual Web Part In SharePoint 2010


Hey Folks,
Let’s see how we can add custom web part properties to a visual web part in SharePoint 2010.
Open Visual Studio 2010 -> File -> New -> Project -> Visual C# -> SharePoint -> 2010 and select Visual Web Part project template as below:
In SharePoint Customization Wizard, validate the SharePoint 2010 site URL as below:
Once Visual Studio 2010 open ups, it will look like below:
Open VisualWebPart1.cs file and add below code:

namespace AddCustomProperty.VisualWebPart1
{
[ToolboxItemAttribute(false)]
public class VisualWebPart1 : WebPart
{
// Visual Studio might automatically update this path when you change the Visual Web Part project item.
private const string _ascxPath = @”~/_CONTROLTEMPLATES/AddCustomProperty/VisualWebPart1/VisualWebPart1UserControl.ascx”;
private string _Name;
[WebBrowsable(true), WebDisplayName("Name"), WebDescription("My Name"),
Personalizable(PersonalizationScope.Shared), Category("Custom Property"),
System.ComponentModel.DefaultValue("")]
public string Name
{
get { return _Name; }
set { _Name = value; }
}
protected override void CreateChildControls()
{
VisualWebPart1UserControl control = (VisualWebPart1UserControl)Page.LoadControl(_ascxPath);
control.Name = Name;
Controls.Add(control);
}
}
}

It should look like below:
Open VisualWebPart1UserControl.ascx file and add below code:
It should look like below:
Open VisualWebPart1UserControl.ascx.cs file and add below code:
namespace AddCustomProperty.VisualWebPart1
{
public partial class VisualWebPart1UserControl : UserControl
{
public string Name { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
NameLiteral.Text = "Your Name is : " + this.Name;
}
}
}
It should look like below:
Deploy The Project:
Final Look:
Thanks & Have Fun!! :)

What is an App in SharePoint 2013


App is similar to a web part. One main key difference is everything is at the client side and not on the server side when you write a code developing an app which is called client web part.

In SharePoint 2013 Lists and Libraries are now termed as apps.

SharePoint now has its own app store where we get some free apps and some paid apps which can be installed and then can be used inside SharePoint.

There are three hosting options when you create app for SharePoint.

1) SharePoint hosted - On Premises.
2) Externally hosted
3) SharePoint Online - Sandbox solutions can be created. (deprecated now in SharePoint 2013) or new apps web part (client web part) can be used.

Certain important points about an app are :
  •       App cannot have any server side code.
  •      Apps  get created in a special “app web” on a special URL which is isolated from the original SharePoint web. Each app is a part of dedicated site collection.
  •      App does not have permission to talk to the parent site or site collection
  •     App cannot talk to the host site. ( a site in which app is displayed)
  •       Apps can be created using Visual Studio 2012     or using "Napa" Office 365 Development Tools
So SharePoint 2013 apps do not live in SharePoint rather they execute within the browser client or in a non-SharePoint server such as IIS or Windows Azure.

Apps can only be added by users with Full Control permission to the site. As mentioned earlier Apps can be installed from the centralized app store from on premises SharePoint or from public app store.

Apps can also be opened as a full browser screen or can also be a part of page. When we want app as a part of page we can use app part just like a web part to display that app in the app part. App part will display content of that app part in Iframe html element.

Regardless of how you authenticate your app with SharePoint, you need to have user consent to perform actions. You declare the required permissions in the app manifest file while developing, and the user is asked to grant or deny those permissions to the app during installation.

You can connect your app with just about any internal or public web services, take advantage of the new OAuth 2.0 support in SharePoint, and use the Representational State Transfer (REST) and client APIs (JavaScript and .NET) to integrate and connect your app with SharePoint.

There is a list of available apps that can be downloaded (some free / some paid versions) from Microsoft market place for SharePoint 2013.



Tuesday, December 25, 2012

FBA Cookie getting expired only in Safari and Chrome.

Hi Reader,

This blog is for all those guys who have tried their level best to solve this unique issue and still couldnt get the root cause why the Form Based Authentication Cookie getting expired daily ( almost after some hours ) ONLY on Safari and Chrome browser.

I have spend lot many days finding the root cause of this issue and yes also solve it for clients.
Applicaiton that use hosted Safari inside of UIWebView ( which is also Chrome) or Apps that host a website in PhoneGap usually face this issue. If its FBA then Google Chrome for iOS might switch FormsAuth to Cookieless mode.

This has been fixed in .NET 4.5 and you wont see this issue if you have .NET 4.5 installed, even uf you're running .NET 4 application. Since now you are facing this trouble then here are following steps to follow and immediately get rid of this issue.

Thanks to blogger: Scott

STEP 1:  Modify your web.config file.

<authentication mode="Forms" >
  <forms loginUrl="~/Account/SignIn" timeout="2880" cookieless="UseCookies" />
</authentication>


STEP 2:  Once you explore your Sharepoint hosted site in IIS you will notice the app_browser folder.
Create a "generic.browser" named file in that folder and paste the exact code in it.


<browsers>
  <browser refID="GenericDownlevel"> 
    <capabilities> 
      <capability name="cookies" value="true" /> 
    </capabilities>
  </browser>
</browsers>



STEP 3: Generate a New MachineKey.

“Machine key a unique key that differentiates one computer from others. And this key is used to create unique identifier when cookie is created in the client machine from a server side code. This key is generally present in the machine.config file when you install .NET framework that is generally not visible to the user as it remains in the .NET Framework installation directory. When you specify the same key in your web.config, the value of machine key specified in the machine.config is overridden by the one you have specified in the web.config file. “
Once the key is generated, they are converted into a string of hexadecimal characters.
Created a 256-bit decryption key and a 512-bit validation key, with Rijndael as the data validation algorithm.
You need to include this newly created machine key in your web.config file.




Hope my above solution will surely save lot of efforts and time.






Thursday, December 20, 2012

SharePoint Fields Internal Names List


Much used reprinting of list of fields with internal names for easy reference:
Document Library fields
Display NameInternal NameGUIDType
IDID{1d22ea11-1e32-424e-89ab-9fedbadb6ce1}Counter
Content Type IDContentTypeId{03e45e84-1992-4d42-9116-26f756012634}ContentTypeId
Content TypeContentType{c042a256-787d-4a6f-8a8a-cf6ab767f12d}Text
CreatedCreated{8c06beca-0777-48f7-91c7-6da68bc07b69}DateTime
Created ByAuthor{1df5e554-ec7e-46a6-901d-d85a3881cb18}User
ModifiedModified{28cf69c5-fa48-462a-b5cd-27b6f9d2bd5f}DateTime
Modified ByEditor{d31655d1-1d5b-4511-95a1-7a09e9b75bf2}User
Has Copy Destinations_HasCopyDestinations{26d0756c-986a-48a7-af35-bf18ab85ff4a}Boolean
Copy Source_CopySource{6b4e226d-3d88-4a36-808d-a129bf52bccf}Text
Approval Status_ModerationStatus{fdc3b2ed-5bf2-4835-a4bc-b885f3396a61}ModStat
Approver Comments_ModerationComments{34ad21eb-75bd-4544-8c73-0e08330291fe}Note
URL PathFileRef{94f89715-e097-4e8b-ba79-ea02aa8b7adb}Lookup
PathFileDirRef{56605df6-8fa1-47e4-a04c-5b384d59609f}Lookup
ModifiedLast_x0020_Modified{173f76c8-aebd-446a-9bc9-769a2bd2c18f}Lookup
CreatedCreated_x0020_Date{998b5cff-4a35-47a7-92f3-3914aa6aa4a2}Lookup
File SizeFile_x0020_Size{8fca95c0-9b7d-456f-8dae-b41ee2728b85}Lookup
Item TypeFSObjType{30bb605f-5bae-48fe-b4e3-1f81d9772af9}Lookup
Effective Permissions MaskPermMask{ba3c27ee-4791-4867-8821-ff99000bac98}Computed
ID of the User who has the item Checked OutCheckedOutUserId{a7b731a3-1df1-4d74-a5c6-e2efba617ae2}Lookup
Is Checked out to localIsCheckedoutToLocal{cfaabd0f-bdbd-4bc2-b375-1e779e2cad08}Lookup
Checked Out ToCheckoutUser{3881510a-4e4a-4ee8-b102-8ee8e2d0dd4b}User
NameFileLeafRef{8553196d-ec8d-4564-9861-3dbe931050c8}File
Unique IdUniqueId{4b7403de-8d94-43e8-9f0f-137a3e298126}Lookup
ProgIdProgId{c5c4b81c-f1d9-4b43-a6a2-090df32ebb68}Lookup
ScopeIdScopeId{dddd2420-b270-4735-93b5-92b713d0944d}Lookup
Virus StatusVirusStatus{4a389cb9-54dd-4287-a71a-90ff362028bc}Lookup
Checked Out ToCheckedOutTitle{9d4adc35-7cc8-498c-8424-ee5fd541e43a}Lookup
Check In Comment_CheckinComment{58014f77-5463-437b-ab67-eec79532da67}Lookup
Checked Out ToLinkCheckedOutTitle{e2a15dfd-6ab8-4aec-91ab-02f6b64045b0}Computed
Document Modified ByModified_x0020_By{822c78e3-1ea9-4943-b449-57863ad33ca9}Text
Document Created ByCreated_x0020_By{4dd7e525-8d6b-4cb4-9d3e-44ee25f973eb}Text
File TypeFile_x0020_Type{39360f11-34cf-4356-9945-25c44e68dade}Text
HTML File TypeHTML_x0020_File_x0020_Type{0c5e0085-eb30-494b-9cdd-ece1d3c649a2}Text
Source Url_SourceUrl{c63a459d-54ba-4ab7-933a-dcf1c6fadec2}Text
Shared File Index_SharedFileIndex{034998e9-bf1c-4288-bbbd-00eacfc64410}Text
Edit Menu Table Start_EditMenuTableStart{3c6303be-e21f-4366-80d7-d6d0a3b22c7a}Computed
Edit Menu Table End_EditMenuTableEnd{2ea78cef-1bf9-4019-960a-02c41636cb47}Computed
NameLinkFilenameNoMenu{9d30f126-ba48-446b-b8f9-83745f322ebe}Computed
NameLinkFilename{5cc6dc79-3710-4374-b433-61cb4a686c12}Computed
TypeDocIcon{081c6e4c-5c14-4f20-b23e-1a71ceb6a67c}Computed
Server Relative URLServerUrl{105f76ce-724a-4bba-aece-f81f2fce58f5}Computed
Encoded Absolute URLEncodedAbsUrl{7177cfc7-f399-4d4d-905d-37dd51bc90bf}Computed
NameBaseName{7615464b-559e-4302-b8e2-8f440b913101}Computed
File SizeFileSizeDisplay{78a07ba4-bda8-4357-9e0f-580d64487583}Computed
Property BagMetaInfo{687c7f94-686a-42d3-9b67-2782eac4b4f8}Lookup
Level_Level{43bdd51b-3c5b-4e78-90a8-fb2087f71e70}Integer
Is Current Version_IsCurrentVersion{c101c3e7-122d-4d4d-bc34-58e94a38c816}Boolean
SelectSelectTitle{b1f7969b-ea65-42e1-8b54-b588292635f2}Computed
SelectSelectFilename{5f47e085-2150-41dc-b661-442f3027f552}Computed
EditEdit{503f1caa-358e-4918-9094-4a2cdc4bc034}Computed
owshiddenversionowshiddenversion{d4e44a66-ee3a-4d02-88c9-4ec5ff3f4cd5}Integer
UI Version_UIVersion{7841bf41-43d0-4434-9f50-a673baef7631}Integer
Version_UIVersionString{dce8262a-3ae9-45aa-aab4-83bd75fb738a}Text
Instance IDInstanceID{50a54da4-1528-4e67-954a-e2d24f1e9efb}Integer
OrderOrder{ca4addac-796f-4b23-b093-d2a3f65c0774}Number
GUIDGUID{ae069f25-3ac2-4256-b9c3-15dbc15da0e0}Guid
Workflow VersionWorkflowVersion{f1e020bc-ba26-443f-bf2f-b68715017bbc}Integer
Workflow Instance IDWorkflowInstanceID{de8beacf-5505-47cd-80a6-aa44e7ffe2f4}Guid
Source Version (Converted Document)ParentVersionString{bc1a8efb-0f4c-49f8-a38f-7fe22af3d3e0}Lookup
Source Name (Converted Document)ParentLeafName{774eab3a-855f-4a34-99da-69dc21043bec}Lookup
TitleTitle{fa564e0f-0c70-4ab9-b863-0177e6ddd247}Text
Template LinkTemplateUrl{4b1bf6c6-4f39-45ac-acd5-16fe7a214e5e}Text
Html File Linkxd_ProgID{cd1ecb9f-dd4e-4f29-ab9e-e9ff40048d64}Text
Is Signedxd_Signature{fbf29b2d-cae5-49aa-8e0a-29955b540122}Boolean
MergeCombine{e52012a0-51eb-4c0c-8dfb-9b8a0ebedcb6}Computed
RelinkRepairDocument{5d36727b-bcb2-47d2-a231-1f0bc63b7439}Computed

 Custom list fields 
Display NameInternal NameGUIDType
IDID{1d22ea11-1e32-424e-89ab-9fedbadb6ce1}Counter
Content Type IDContentTypeId{03e45e84-1992-4d42-9116-26f756012634}ContentTypeId
Content TypeContentType{c042a256-787d-4a6f-8a8a-cf6ab767f12d}Text
TitleTitle{fa564e0f-0c70-4ab9-b863-0177e6ddd247}Text
ModifiedModified{28cf69c5-fa48-462a-b5cd-27b6f9d2bd5f}DateTime
CreatedCreated{8c06beca-0777-48f7-91c7-6da68bc07b69}DateTime
Created ByAuthor{1df5e554-ec7e-46a6-901d-d85a3881cb18}User
Modified ByEditor{d31655d1-1d5b-4511-95a1-7a09e9b75bf2}User
Has Copy Destinations_HasCopyDestinations{26d0756c-986a-48a7-af35-bf18ab85ff4a}Boolean
Copy Source_CopySource{6b4e226d-3d88-4a36-808d-a129bf52bccf}Text
owshiddenversionowshiddenversion{d4e44a66-ee3a-4d02-88c9-4ec5ff3f4cd5}Integer
Workflow VersionWorkflowVersion{f1e020bc-ba26-443f-bf2f-b68715017bbc}Integer
UI Version_UIVersion{7841bf41-43d0-4434-9f50-a673baef7631}Integer
Version_UIVersionString{dce8262a-3ae9-45aa-aab4-83bd75fb738a}Text
AttachmentsAttachments{67df98f4-9dec-48ff-a553-29bece9c5bf4}Attachments
Approval Status_ModerationStatus{fdc3b2ed-5bf2-4835-a4bc-b885f3396a61}ModStat
Approver Comments_ModerationComments{34ad21eb-75bd-4544-8c73-0e08330291fe}Note
EditEdit{503f1caa-358e-4918-9094-4a2cdc4bc034}Computed
TitleLinkTitleNoMenu{bc91a437-52e7-49e1-8c4e-4698904b2b6d}Computed
LinkFilenameNoMenu
TitleLinkTitle{82642ec8-ef9b-478f-acf9-31f7d45fbc31}Computed
SelectSelectTitle{b1f7969b-ea65-42e1-8b54-b588292635f2}Computed
Instance IDInstanceID{50a54da4-1528-4e67-954a-e2d24f1e9efb}Integer
OrderOrder{ca4addac-796f-4b23-b093-d2a3f65c0774}Number
GUIDGUID{ae069f25-3ac2-4256-b9c3-15dbc15da0e0}Guid
Workflow Instance IDWorkflowInstanceID{de8beacf-5505-47cd-80a6-aa44e7ffe2f4}Guid
URL PathFileRef{94f89715-e097-4e8b-ba79-ea02aa8b7adb}Lookup
PathFileDirRef{56605df6-8fa1-47e4-a04c-5b384d59609f}Lookup
ModifiedLast_x0020_Modified{173f76c8-aebd-446a-9bc9-769a2bd2c18f}Lookup
CreatedCreated_x0020_Date{998b5cff-4a35-47a7-92f3-3914aa6aa4a2}Lookup
Item TypeFSObjType{30bb605f-5bae-48fe-b4e3-1f81d9772af9}Lookup
Effective Permissions MaskPermMask{ba3c27ee-4791-4867-8821-ff99000bac98}Computed
NameFileLeafRef{8553196d-ec8d-4564-9861-3dbe931050c8}File
Unique IdUniqueId{4b7403de-8d94-43e8-9f0f-137a3e298126}Lookup
ProgIdProgId{c5c4b81c-f1d9-4b43-a6a2-090df32ebb68}Lookup
ScopeIdScopeId{dddd2420-b270-4735-93b5-92b713d0944d}Lookup
File TypeFile_x0020_Type{39360f11-34cf-4356-9945-25c44e68dade}Text
HTML File TypeHTML_x0020_File_x0020_Type{4ef1b78f-fdba-48dc-b8ab-3fa06a0c9804}Computed
Edit Menu Table Start_EditMenuTableStart{3c6303be-e21f-4366-80d7-d6d0a3b22c7a}Computed
Edit Menu Table End_EditMenuTableEnd{2ea78cef-1bf9-4019-960a-02c41636cb47}Computed
NameLinkFilenameNoMenu{9d30f126-ba48-446b-b8f9-83745f322ebe}Computed
NameLinkFilename{5cc6dc79-3710-4374-b433-61cb4a686c12}Computed
TypeDocIcon{081c6e4c-5c14-4f20-b23e-1a71ceb6a67c}Computed
Server Relative URLServerUrl{105f76ce-724a-4bba-aece-f81f2fce58f5}Computed
Encoded Absolute URLEncodedAbsUrl{7177cfc7-f399-4d4d-905d-37dd51bc90bf}Computed
File NameBaseName{7615464b-559e-4302-b8e2-8f440b913101}Computed
Property BagMetaInfo{687c7f94-686a-42d3-9b67-2782eac4b4f8}Lookup
Level_Level{43bdd51b-3c5b-4e78-90a8-fb2087f71e70}Integer
Is Current Version_IsCurrentVersion{c101c3e7-122d-4d4d-bc34-58e94a38c816}Boolean