views:

558

answers:

3

I'm developing an ASP.NET MVC website on a local Windows Server 2008/IIS7 machine and am I'm now attempting to deploy it to my web host provider, ASPnix. I'm using their Shared Web Hosting service and have been placed on an IIS7 server which they claim supports ASP.NET MVC.

However, when I deploy the application up to their servers, I get an "Internal Server Error".

Here's the Error Summary:

HTTP Error 500.19 - Internal Server Error

The requested page cannot be accessed because the related configuration data for the page is invalid.

Here are the relevant portions of the Detailed Error Information:

Module: IIS Web Core

Notification: BeginRequest

Handler: Not yet determined

Error Code: 0x80070021

Config Error: This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".

And the Config Source looks like this:

144:     </modules>
145:     <handlers>
146:      <remove name="WebServiceHandlerFactory-Integrated"/>

The error is coming from the fact that I have a system.webServer section in my web.config file that has a handlers child section. The system.webServer section is the exact config section that was laid down by default when I first created the ASP.NET MVC website in Visual Studio. It has the following XML comment above it:

<!-- 
The system.webServer section is required for running ASP.NET AJAX under Internet
Information Services 7.0.  It is not necessary for previous version of IIS.
-->

I take the handlers child section out, and the 500 error goes away. Of course, that section is required for an ASP.NET MVC application to work properly in IIS7, so simply taking it only produces other errors (404 errors in this case since routing doesn't work).

The support engineers at ASPnix claim that ASP.NET MVC is installed and configured properly in IIS7 on their servers. I'm not saying I don't believe them as this is the first ASP.NET MVC site that I've built and deployed. However, I can't think of anything I could do to make this work since it appears to be a config issue at a level that I don't have access to.

This issue smells like it would be a common issue with folks trying to deploy ASP.NET MVC to a hosting provider. Has anything run into this either with ASPnix or other web hosting companies and hopefully found a solution?

ps

One odd thing. When researching this issue on the web I find many people saying they had to set the overrideModeDefault attribute their applicationHost.config files of IIS7 to from "Deny" to "Allow". However, my local development server has this set to "Deny" and everything works fine. Even so, I don't have access to the applicationHost.config file anyway on the web host's server.

A: 

please check if you deployed your application properly : Deploying an ASP.NET Server (IIS 7)

Anwar Chandra
Yes, I did. Thanks anyway.
twistedstream
+2  A: 

Open IIS Management, Under the main server node, select open Feature Delegation (in Management section)

"Handler Mappings" to "Read/Write" instead of "Read Only"

It looks like your hosting provider unnecessarily locked down IIS.

I was able to recreate the problem on my local IIS 7.5 server.

See this for a global settings reset.

Coderuckus
Man, that did it. Let this be a tip to all you web hosting companies out there.
twistedstream
Glad it worked out for you. Shame on the web host!
Coderuckus
Ya, I hope ASPnix figures out that they're ASP.NET MVC configuration on IIS7 (Integrated mode, not Classic) really doesn't work. I moved the site over to WebHost4Life and it worked like a charm. I have to say I'm really liking WebHost4Life. They have a live chat feature where I've been able to work out any of the minor issues I've had. I highly recommend them to anyone.
twistedstream
A: 

The link to http://www.winservermart.com/Howto/HTTP_Error_500_19_IIS_7.aspx doesn't fix the problem. The "reset delegation" creates an exception in web.config for a particular domain only which makes the site work, but doesn't answer how to set it permanently system wide. So, it's not shame, because we know the solution and set all settings correctly. And advertising here some other hosts pointless we have tons of clients that are running from wh4l and describing how great their overloaded servers.

-Polk

romacities