In a recent project we had a test server with an internal DNS name (something like portal_uat and portal_test). Forms authentication is enabled and it works fine in Chrome and FireFox, but Internet Explorer did not get pass the authentication page because the cookie was not set.
It appeared that our DNS name contained a underscore and this is not a valid DNS name. Changing this by getting rid of the underscore fixed our issue. As always, the specs are important
Forms authentication and domain names with underscores
Windows Azure Platform Appliance announced
Microsoft is building cloud hosting data centers all over the place, but if you don’t want to share you data with other tenants or want more control over your data, then this is good news for you:
WASHINGTON — July 12, 2010 — During its annual Worldwide Partner Conference, top executives from Microsoft Corp. talked with more than 14,000 attendees about the impact of cloud computing and the myriad of ways it will enable partners to deliver compelling new services to their customers. The company made several announcements, including the introduction of the Windows Azure platform appliance, the first turnkey cloud services platform for deployment in customer and service provider datacenters. Dell Inc., eBay Inc., Fujitsu Ltd. and HP are early adopters of a limited production release of the appliance.
Quote from their press release.
Find more informatie here: http://www.microsoft.com/windowsazure/appliance/
It is based on dedicated hardware build by partners like Dell, Fujitsu and HP.
Web installer cannot contain a folder called filters
In a recent project we use the standard VS 2008 Web Installer Project to create a MSI to setup a web application. This worked fine before but after some recent changes the installer stopped at almost 100% and rolled back. After creating a log (by executing msiexec from the command line and specifying the /lv log.txt parameter), we found the following error:
INFO : [06/23/2010 15:55:16:700] [ApplyWebFolderProperties ]: Getting METADATA_HANDLE for the directory '/LM/W3SVC/1/ROOT/obsvm/DynamicData/Filters'.
ERROR : [06/23/2010 15:55:16:747] [ApplyWebFolderProperties ]: FAILED: -2147024893
One of the recent changes I did was adding a folder called Filters. This folder contained usercontrols for Dynamic Data. Apparently the installer, in combination with IIS, does not support folders called Filters
According to this blog article also APPPOOLS, INFO and 1 are not allowed and can give errors while running the installer.
So keep this in mind when your web installer throws a -2147024893 code and you want to install a folder named filters, apppools, info or 1.
New Azure Tools and SDK released
Microsoft has released new Visual Studio 2010 tool support for Azure: http://blogs.msdn.com/b/jnak/archive/2010/06/07/june-2010-release-of-the-windows-azure-tools-sdk.aspx
Direct download: http://www.microsoft.com/downloads/details.aspx?FamilyID=2274a0a8-5d37-4eac-b50a-e197dc340f6f&displaylang=en
New for version 1.2:
- Visual Studio 2010 RTM Support: Full support for Visual Studio 2010 RTM.
- .NET 4 support: Choose to build services targeting either the .NET 3.5 or .NET 4 framework.
- Cloud storage explorer: Displays a read-only view of Windows Azure tables and blob containers through Server Explorer.
- Integrated deployment: Deploy services directly from Visual Studio by selecting ‘Publish’ from Solution Explorer.
- Service monitoring: Keep track of the state of your services through the ‘compute’ node in Server Explorer.
- IntelliTrace support for services running in the cloud: Adds support for debugging services in the cloud by using the Visual Studio 2010 IntelliTrace feature. This is enabled by using the deployment feature, and logs are retrieved through Server Explorer.
Introduction to SQL Azure TechNet article published
Last month my colleague Joachim Farla and I wrote an article for Microsoft TechNet Magazine about SQL Azure. This week the article was published. You can get a free subscription from the TechNet website. The article itself can also be found online at the weblog of Joachim. It is written in Dutch, but Google translate gives us an English version.
Update to Windows AppFabric Server available
There is a minor update available for the Windows AppFabric Server (not to be confused with the Windows Azure AppFabric). The beta 2 refresh supports the just released .NET 4 and Visual Studio 2010 versions.
Download link: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=8197ad8d-673f-4efb-b165-82710f2648c3#filelist
Windows Server AppFabric is a set of integrated technologies that make it easier to build, scale and manage Web and composite applications that run on IIS. Windows Server AppFabric targets applications built using ASP.NET, Windows Communication Foundation (WCF), and Windows Workflow Foundation (WF).
It provides out-of-the-box capabilities for you to easily build and manage composite applications, including:
- Enhanced design and development tools in Visual Studio to build rich composite applications
- Management and monitoring of services and workflows via integration with IIS Manager and Windows PowerShell
- Distributed in-memory application cache to improve application performance
Saving JQGrid parameters in cookie
In a recent ASP.NET MVC project we used jqGrid. An excellent jquery plugin to display a grid. We added some filter possibilities and with jquery updated the url where we had to fetch the data from.
Worked nice, however, when the user selected a certain filtering or a certain page and clicked on one of the items in the list, they were navigated away from the grid. When they navigated back, the grid was at its start position, so at the first page, default sorting and filtering.
So we had to store the values selected by the user. I created two javascript functions for this (in combination with jQuery)
function saveGridToCookie(name, grid) {
var gridInfo = new Object();
name = name + window.location.pathname;
gridInfo.url = grid.jqGrid('getGridParam', 'url');
gridInfo.sortname = grid.jqGrid('getGridParam', 'sortname');
gridInfo.sortorder = grid.jqGrid('getGridParam', 'sortorder');
gridInfo.selrow = grid.jqGrid('getGridParam', 'selrow');
gridInfo.page = grid.jqGrid('getGridParam', 'page');
gridInfo.rowNum = grid.jqGrid('getGridParam', 'rowNum');
$.cookie(name, $.toJSON(gridInfo));
}
function loadGridFromCookie(name) {
var c = $.cookie(name + window.location.pathname);
if (c == null)
return;
var gridInfo = $.parseJSON(c);
var grid = jQuery("#" + name);
grid.jqGrid('setGridParam', { url: gridInfo.url });
grid.jqGrid('setGridParam', { sortname: gridInfo.sortname });
grid.jqGrid('setGridParam', { sortorder: gridInfo.sortorder });
grid.jqGrid('setGridParam', { selrow: gridInfo.selrow });
grid.jqGrid('setGridParam', { page: gridInfo.page });
grid.jqGrid('setGridParam', { rowNum: gridInfo.rowNum });
grid.trigger("reloadGrid");
}
It reads and stores some of the information of a grid from and to a cookie. The cookie has a lifetime of the session and is unique by page and grid.
A html extension writes the javascript and table for the grid, so we can easily change that to include calls to those functions. We added an event to the LoadComplete of the grid.
var eventList_init = false;
jQuery('#eventList_tb').jqGrid( { … other properties …,
loadComplete : function() { if (eventList_init) saveGridToCookie("eventList_tb", jQuery("#eventList_tb")); }
if (eventList_init == false){
loadGridFromCookie("eventList_tb");
eventList_init =true;}
When the page is loaded (first time or navigated back), the values are read from the cookie. When the grid is loaded (by paging, sorting, filtering) the loadComplete will be fired and stores the new settings of the grid.
Drawback; cookies has to be allowed and the user may return to a grid set to a certain page/filtering/sorting.
If you know of another solution, let me know!
Create a UCMA application with presence aware workflow
In a webcast which I did together with Joachim Farla about Unified Communications Development For Non Professional Developers I talked about creating a UCMA workflow. It is based on the inbound/outbound sample which you can download from GotUC.net.
It is a pretty simple application; it starts a collaboration platform, registers an OCS endpoint and begins listening for incoming calls (or IMs). In this example, it uses client credentials. For production usages, take a provisioned application to do this.
At the same time it also starts a Windows Workflow runtime. When a message is received, it is passed to this workflow so it can be handled. The workflow is the standard XOML workflow of the Windows Workflow Foundation but enhanced with a communications service and OCS activities.
It will first accept the call, determines the presence of a configured SIP address and with an if/else construction choices the right branch. If the user is online, an instant message is send with a question and answer activity. if the user is offline, a outgoing voice call will be created. Using the text to speech functionality, the user will hear some text spoken to him/her and a question is being asked. After giving an answer, the call is disconnected. Meaning you can still reach the user over the phone but use IM primary when he/she is available.
You can configure the actions with your own answer/question systems, call other users, disconnect the call or use speech. There are a lot of OCS activities to pick.
Very simple, but it shows how to use the workflow to make interactive sessions with a user.
To run this sample, make sure you have Visual Studio 2008/2010 and the UCMA SDK installed. You can create an OCS test account at GotUC.net or use your own.
Please see the video for a demonstration of the code.
Presence Aware Workflow with OCS 2007 R2 from e-office on Vimeo.
Using Exchange Web Services
A while back I did a webcast together with Joachim Farla about Unified Communications Development For Non Professional Developers. One of the items I talked about was the Exchange Web Services in Exchange 2010.
The Exchange Web Services aren’t new. Introduced in Exchange 2007 and enhanced in SP 1 and 2010, they now have a native API to call the SOAP service and also supplied UI controls. These controls allows you to build Outlook like applications in Windows Presentation Foundation. You can download this API from the Microsoft Download site.
So what can you build with the EWS API? Basically you can build your own Outlook clone. Microsoft created the MacOS version of Outlook, Entourage, with the Exchange Web Services. But you can also sync contacts with your own CRM system, create SharePoint WebParts to display calendar data or create a room booking application. It also supports auto discovery. You supply an email address and credentials and it will find the correct EWS server.
In the WebCast I demoed a sample application from Microsoft. You can view this section in the video below.The sample code used can be found at GotUC.net.
EWS Managed API from e-office on Vimeo.
Update to Google Docs
As Microsoft is working hard to get their Office apps to the web, Google is also improving their existing online text editor, spreadsheet and drawing apps. Improvements in the UI, performance and the collaboration part.
See this nice video of some of the new features:
It is primary based on HTML5 and if you can run Quake inside a HTML 5 browser, it should be good enough to do your word editing.