Phi 9 Official Blog

Web Hosting Phenomenon

WebMatrix, permissions and DotNetNuke!

comments

WebMatrix has revolutionized the way the web applications are configured and deployed. But there still is a missing piece to the puzzle — ASP.net application pool identity permissions. Because the way ASP.net user trust level works in IIS, some ASP.net applications need special permission sets. Coupled with WebMatrix this can increase the confusion for users to have their applications deployed.

Before we begin troubleshooting, we need to understand how WebMatrix actually works (for those who don’t know it yet). The process includes

  • Uploading files to the virtual host
  • Setting application settings as defined in web.config
  • Restoring databases
  • Setting permissions for App_Data and virtual host root

The odd thing happens at the last step in this case. You get an “Error – Publish Failed!”. Unless you click on the Log, you won’t likely find out what caused it. The typical error looks like this

The error occurs right before setting up the permissions. Now, the way WebMatrix sets up permissions is very odd. The “setAcl” command you see above first resets the current permissions and then it applies the permissions defined in WebMatrix profile and application settings that you are trying to deploy (located in C:\Users\User\Documents\IISExpress\WebDeploy\Config\ProjectName). And for this reason the WebDeploy has come under heavy criticism in official community forums. Though one can see this issue is likely addressed in the recent release of WebDeploy 3.0 but it has a few more problems of its own.

Based on the server side rules, the domain’s application pool settings, you’ll need to have an admin set permissions on root of the domain. But that’s still not all. There’s one last thing you should worry about. If you see an error like below, the DotNetNuke’s installation simply will halt. And you’ll have to start over by recreating the database and reuploading the files, because of incomplete data in the database. It’s just the DotNetNuke’s installation process which is still very old fashioned.

For me, this is just paradigm of user interest and software conflict.
To sum up, one should:
a) Either have a system engineer look up WebDeploy, assign and fix necessary permissions and make sure they are inherited properly so WebMatrix won’t overwrite (a lengthy process itself)
b) Or tell WebMatrix to leave the permissins alone and then have a system engineer fix the issue
 msbuild.exe myproject.csproj /p:IncludeSetAclProviderOnDestination=False

Either way, it’s the user interest that wins!

Be Sociable, Share!

Written by Phi 9 World

April 30th, 2012 at 8:05 am