SharePoint 2010: access with Safari in iOS 8

Because of a problem in the OOTB browser definitions in .NET 2, carried up to .NET 3.5, iPhone with iOS 8 are not correctly recognized as mobile devices in SharePoint 2010.

The problem is described in iOS 8 / Safari 8 not working with ASP.NET AJAX-Extensions, but the solution in that article is not complete, as it fixes the JavaScript issue but not the mobile capabilities.

So I have merged that solution with the iPhone capabilities in the OOTB browsers definitions, getting the content of the new file that you can download here: iOS8.browser

.NET client side debugging and profiling with Glimpse

Glimpse is a client side library for debugging and profiling, that you can install in your Visual Studio project with NuGet.

It is fully described in the following blog posts:

 

There are also extension to Entity Framework, to track database requests, and Elmah, already discussed in my other article .NET Health Monitoring with Elmah, that allows to add recorded exceptions in a new tab.

 

Finally, it's possible to develop custom tabs, described in this serie of articles:

.NET Health Monitoring with Elmah

Elmah (Error Logging Modules and Handlers for ASP.NET) is a Google library that you can find at its dedicated web site: Elmah - Error Logging Modules and Handlers for ASP.NET.

This library is used for Health Monitoring and allows to trace unhandled exceptions, logging them and, optionally, viewing them in a dedicated page.

 

This library is that it is implemented with a custom HttpModule, as described in the article Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components.

In this way, the installation doesn't require any code recompilation, as it is enough to add copy DLLs to the bin folder and add some web.config entries.

 

Finally, the last article ELMAH (Error Logging Modules and Handlers) with SQL Server Compact explains how to install and configure ELMAH with the Local SQL.

ActiveDirectory query examples

If you need to query the ActiveDirectory, you have two ways:

C#: how associate string description to Enum types

If you need to associate string description to Enum types, you can add an attribute to each enum member, via the System.ComponentModel.DescriptionAttribute attribute.
So for example:
public enum MyEnum
{
[Description("desc A")]
memberA;
[Description("desc B")]
memberB;
}
 
Then, you can retrieve each member description with the following extension method:
public static string GetDescriptionFromAttribute(this Enum myInstance)
{
FieldInfo fi = myInstance.GetType().GetField(myInstance.ToString());
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes != null && attributes.Length > 0)
return attributes[0].Description;
else
return myInstance.ToString();
}

Querying StringCollections with LINQ

If you need to query StringCollections, or other non-generic collection classes, with LINQ, you have to use the Cast method, so, for example:

StringCollection myStringColl = new StringCollection("AAA", "BBB", "CCC");

var query = from x in myStringColl.Cast<string>()...

Considerations developing SharePoint 2010 client applications

Here are a few considerations developing client applications accessing the SharePoint 2010 object model:

  • the target processor must be x64 (the default is x86 instead);
  • you need to use .NET framework 3.5 and not 4.0.

As noted in the post SP2010: SharePoint not supported with .NET framework version, these bugs were present since the beta of SharePoint, but they haven't been fixed yet.