Tuesday, November 27, 2007

Public Property Objects in .Net 2.0/Sharepoint Web Parts (Other than string, bool, int &enum)

I were working on a Custom Web Part for a customer, when I came to the point where I needed to save custom properties in a Web Part, besides the more common ones like string, bool, int and enum.

Theese properties was not to be exposed to the user in the property-pane, but merely to be saved for other purposes.

In my case I needed to save values to an ArrayList and/or a HashTable.

The trick is to define the property as follows:

private ArrayList _myProperties = new ArrayList();

[WebBrowsable(false), Personalizable(true)]

public ArrayList MyProperties
        {
            get
            {
                return this._myProperties;
            }
            set
            {
                this._myProperties = value;
            }
        }

When this is done, you can simply save values to the object from your custom EditorPart (ToolPart), and access it from the Host Web Part.

SharePoint CAML - filtering on DateTime WITH TimeValue. Finally a solution...

After searching the Internet for quite long now, I've finally managed to locate a solution to executing SPQuery in SharePoint (CAML), by filtering on the TimeValue in DateTime columns.

There have not been any (good) documentation on CAML Queries or SPQuery in the SharePoint SDK.

My temporary solution was to retrieve a larger collection based on the Date-value in DateTime, and then filter on Time-value manually. The code was quite ugly and time-consuming....

Well, as mentioned, there is now a solution to the problem:

The key is to include the following property/parameter in the DateTime tag in the CAML query: IncludeTimeValue="True"

<Value Type=”DateTime” IncludeTimeValue=”TRUE”><Today /></Value>
Creds goes to ucsharp, for posting this in his blog

Thursday, October 25, 2007

BDC Authentication Model

The following authentication modes are available when you use the Business Data Catalog to connect to a database or Web service.



Pass-Through (Database and Web Service Systems)

Pass-through authentication refers to the ability of the operating system to pass a client's authentication information to the back-end server. The Business Data Catalog supports pass-through authentication for both database and Web service connections. When you use pass-through authentication, you simply authenticate as the identity of the end user.

When the Business Data Catalog is accessed from a Web page, it runs in the Microsoft Internet Information Services (IIS) worker process, w3wp.exe. The identity of this process is the IIS application pool account impersonating the logged-on user. To avoid losing the logged-on user’s identity when the Business Data Catalog authenticates to the back-end server, you must enable Kerberos delegation between the server running IIS and the other computer. Kerberos delegation enables a receiving server to send the authentication request to the proper location.

When the Business Data Catalog is used for crawling, it runs in the filter daemon process, mssdmn.exe. To access the back-end content source, the threads in the filter daemon process impersonate as the content access account associated with that back-end content source.

A drawback to using pass-through authentication is that the operating system exposes only the user name and password. Therefore, if a company uses two-factor authentication (that is, users are required to have some specific—private—information in addition to a user name and password), you cannot use pass-through authentication.

Despite these drawbacks, simplicity of use makes pass-through authentication a good candidate for use in a testing environment. You might also use it if the destination server uses anonymous authentication or SSL connections.



RevertToSelf (Database and Web Service Systems)

If a user logs on with Windows Authentication, IIS impersonates that particular account. So while IIS runs under the Application Pool Identity, it impersonates the logged-on user, and the request runs under the user’s impersonation before it is passed forward.

RevertToSelf authentication allows you to revert this impersonation and authenticate as the underlying account that is configured for the IIS Application Pool.



WindowsCredentials (Database and Web Service Systems)

Microsoft Office SharePoint Server 2007 authenticates by using Microsoft Windows credentials from its default single sign-on (SSO) service.



RdbCredentials (Database Systems Only)

In RdbCredentials mode, Office SharePoint Server 2007 authenticates by using database credentials from its default SSO service. Office SharePoint Server 2007 adds the database credentials to the connection string and transmits the credentials to the database server.



Credentials (Web Service Systems Only)

Office SharePoint Server 2007 authenticates Web service systems by using credentials other than those from Windows Authentication from its default SSO service. These credentials are used for basic or digest authentication, depending on the configuration of the Web services server. Because basic and digest authentication do not adequately protect credentials, you should use SSL or IPSec or both to secure communication between the Web services server and the server running the Business Data Catalog.

Wednesday, October 10, 2007

Alert: Stopping Windows SharePoint Services Web Application discards customizations of SharePoint Web Applications!

Be aware of the following:

When stopping the Windows SharePoint Services Web Application, in SharePoint Central Administration, all customizations to the web-application, such as DNS, Port, Host Headers etc. will be discarded. Along with this, all changes on web.config files will also be replaced with the original one.

After I experienced this on my own, I came across another blog, discussing the very same topic. Follow this link to read more...

Friday, June 15, 2007

Setting AvailableWebTemplates and AvailablePageLayouts in SiteDefinition

When creating customized Site Templates (Site Definitions) in SharePoint (2007), you may want to define which WebTemplates and PageLayouts that should be available on each Site.

To do so, locate the following Feature in onet.xml:

[Feature id="22A9EF51-737B-4ff2-9346-694633FE4416"]

Add a Propery tag for both AvailableWebTemplates, and AvailablePageLayouts under Properties as shown here:

[properties]
[property key="AvailableWebTemplates" value="*-MyCustomSiteTemplate#3"]
[property key="AvailablePageLayouts" value="~SiteCollection/_catalogs/masterpage/MyCustomPageLayout.aspx"]
[/properties]

"3" corresponds to the Configuration ID in onet.xml

To define multiple pagelayouts, seperate each layout with a colon ":"

You can also add additional Property-Settings like WelcomePageUrl, PagesListUrl, AlternateCssUrl, etc. within the Properties-tag.

I will post an url to the optional Property values, when and if I can locate them :-)

Business Card