Recently I worked on an HttpHandler implementation that is serving images from a backend system. Although everything seemed to work as expected it was discovered images were requested by the browser on every page refresh instead of caching the browser them locally. Together with my colleague Bert-Jan I investigated and solved the problem which will be explained in this post.
Recently I worked on an HttpHandler implementation that is serving images from a backend system.
Although everything seemed to work as expected it was discovered images were requested by the browser on every page refresh instead of the browser caching them locally.
Together with Bert-Jan,
I investigated and solved the problem which will be explained in this article.
With SharePoint it's easy to configure multiple zones for your SharePoint Web Application. For example you have a Publishing Web Site with two zones.
After the content is published it'll also be available on the anonymous site and most of the URLs will be automatically translated to corresponding zone URL.
There are however some places this is not the case.
With SharePoint it is easy to configure multiple zones for your SharePoint Web Application.
For example, you have a Publishing Web Site with two zones.
The authenticated CMS where editors can manage content: https://cms.int
The anonymous website where everybody can view the content: http://www.ext
When the editors link to sites, pages, documents and images the URL will start with https://cms.int.
After the content is published it’ll also be available on the anonymous site.
Now most of the URLs will be automatically translated to corresponding zone URL and start with http://www.ext.
However, there are some places where this is not the case. You could try to use relative URLs but even that will not fix every scenario.
Translate the URL using code
Facing this issue, I had to translate the URLs myself.
But I want to write minimal code. Luckily, Microsoft has done most of the work for me.
This method has an overload where you supply a Uri and a SPUrlZone.
You can provide one of the values of the SPUrlZone enumeration
or you can provide the current zone.
In a previous post I have written about Using the people picker over a one-way trust. In this post I use STSADM commands as there are no other ways to configure this. A downside of the STSADM command is your domain password being visible on the command prompt in clear text for everybody to read, or to retrieve from the command line history.
SharePoint 2010 introduces several cmdlets to replace the “old” STSADM commands. Microsoft has posted an overview of the STSADM to Windows PowerShell mapping. However the commands for configuring the people picker are not available.
A downside of the STSADM command is your domain password being visible on the command prompt in plain text for everybody to read.
With SharePoint 2010 Microsoft introduces several cmdlets to replace the “old” STSADM commands. But looking at the
STSADM to Windows PowerShell mapping
you will see the commands for configuring the people picker are not present.
Creating my own script
PowerShell contains the Get-Credential cmdlet
which uses a dialog to request credentials from the user and stores the password in a
SecureString.
This triggered me to write a PowerShell script which will work the same as “STSADM -o setproperty -pn peoplepicker-searchadforests”,
but instead of typing the credentials on the command line it will use the credential dialog for every trusted domain.
As written in my previous post the configuration is done in two steps.
SetAppPassword
First you need to create a secure store for the credentials.
This is done by executing the SetAppPassword command on every server in your SharePoint Farm with the same password.
STSADM
PowerShell
PeoplePickerSearchADForests
The second step is to register the (trusted) domains to be visible in the people picker.
Remember this setting is per web application and zone.
STSADM
PowerShell
Using the script
I have attached the script so you can use it in any way you want.
You can put the commands in your own .ps1 file,
or load the script in your current session using the following syntax:
(Yes, that is a dot, then a space, then the path to the script)
With the introduction of LINQ the difference between writing code for accessing a lists of objects in memory and accessing a list of data in an external data source like SQL is vanishing. Combining a in memory with a external list in a single query was not yet possible. With the introduction of .NET Framework 4.0 this has changed.
With the introduction of LINQ, the difference between writing code for accessing a list of objects in memory and accessing a list of data in an external data source like SQL Server is vanishing.
Combining an “in memory” list with an external list in a single query was not yet possible.
With the introduction of .NET Framework 4.0 this has changed.
In this article, I want to filter my SQL data using a list of integers I have stored in memory.
With SharePoint 2010 the amount of databases on your SQL server has grown quite a bit. By default most of these databases have their recovery model set to 'FULL'. After some time you will discover you're running out of space.
With SharePoint 2010 the number of databases on your SQL Server has grown quite a bit.
By default, most of these databases have their recovery model set to FULL.
After some time, you will discover you’re running out of space.