500 - Internal server error with no details - asp.net-mvc

Client gave me a server with public ip. I could see default IIS page in browser locally. Then I did following steps
I published solution (Asp.Net MVC) on my file system.
Copied published folder on server.
Created new website in IIS.
Stopped default web site as it was using port 80.
Assigned port 80 to newly created website.
Opened ip again in browser but it gave me 500 - Internal Server Error.
I made sure following configuration is there in web.config file
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
</configuration>
also added following line in config
<validation validateIntegratedModeConfiguration="false" />
still it showed no details for error even on the server.
I connected same publish folder to my local IIS and it is working fine.
Did I miss anything?

The reason for 500 error can be complicated.
So we have to check several things first.
1.Please ensure IIS asp.net feature has been installed on the client server's side. You can check these configurations by reviewing modules and handler mapping in IIS manager.
2.Please check whether the application works fine when you publish to Client's local folder.
3.Please ensure IUSR, authenticated user and application pool identity has been added to the security group of your folder.
4.Please Check whether special sub-status code or win-32 status code can be found in your IIS log.
5.Please ensure your .net framework and your clients' are the same.
6.Please check whether your application pool has selected the correct mode and runtime version.
With more information, we may find out the root cause of the 500 error.

Related

ASP.NET MVC membership login works locally, not on azure app service

My ASP.NET MVC application is deployed on Azure app service and was working until today. It won't let me login anymore through the application which uses ASPNET membership. If I run the application in Visual Studio locally pointing to the production azure sql db it works. The deployed app can read data fine but it seems when it tries to login it doesn't while deployed on azure. I haven't changed any code so I don't know why it stopped working on azure when it was. It still allows for reading of data, it displays items in a browse page. I saw this error when I disabled custom errors:
A network-related or instance-specific error occurred while
establishing a connection to SQL Server. The server was not found
or was not accessible. Verify that the instance name is correct and
that SQL Server is configured to allow remote connections. (provider:
SQL Network Interfaces, error: 26 - Error Locating Server/Instance
Specified)
I've checked these questions but they didn't seem to make it work:
Azure SQL firewall
Network interface azure
Azure passwords
Hashed passwords
login works locally not on azure
azure debugging
login register locally not on azure
UPDATE
I used remote debugging and it's failing in a razor view when I check the roles using this line:
if (User.IsInRole("Administrator")) {
I don't know why it was working for a while then stopped but this is what I did to fix it. It was trying to connect to an old membership database connection LocalSqlConnection from a machine.config file. I saw it creating the aspnetdb.mdf in the AppData folder when I would run in visual studio but I am using ASP.NET Identity. I had to modify my web.config like this keep it from using the local db:
Comment out these:
<!--
<membership>
<providers>
...
</providers>
</membership>
<profile>
<providers>
...
</providers>
</profile>
<roleManager>
<providers>
..
</providers>
</roleManager>
-->
Add this:
<modules>
<remove name="RoleManager"/>
</modules>
Add this in <connectionStrings>
<add name="LocalSqlServer" connectionString="same as application database connectionstring"...
The answer from #clayRay in this question gave me most of the answer:
How do I stop using ASPNETDB.MDF in LocalDB?

Deploy ASP.NET MVC 4 Application

In Visual Studio my project builds and runs with no problem. When deploying to Windows Server 2012 R2 I encounter the following error:
A default document is not configured for the requested URL, and
directory browsing is not enabled on the server.
I have installed all 4.5 and other Roles and Profiles, have given permission to the folder to everyone and have read every article and tried to implement every suggestion to no avail..
I'm out of options, spent weeks on this and cannot understand how this is so convoluted just to deploy a site.. Can someone advise? Thanks
Edit - this is for Windows Server 2012 and I have tried suggested alternatives such as adding runAllManagedModulesForAllRequests to my web.config.
Edit When deploying I build the solution in Release mode and copy the bin, views, content and scripts folders over to Windows Server. In IIS I then make the folder an application, making sure a 4.0 App Pool is assigned and still receive the error.
Final Edit
Publish allowed me to see the structure that needed to be copied over. There were also 3 dll's that needed to be copied local from Visual Studio:
System.Web.Http.dll
System.Web.Http.WebHost.dll
System.Net.Http.Formatting.dll
As well as Web.Config dependentAssembly updated to take into account some MVC4 dll's such as Unity.Mvc4 pointing to MVC3 binaries.
This error message gives a clue as to the problem. MVC sites do not rely on documents or web pages in the way that WebForms do, the default mode for IIS. They depend on a special handler that deals with the RESTful urls used to pass requests to your application.
In your web.config file, check that the following config is present in the system.webServer section:
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
Then on your web server, open the IIS Manager, navigate in the Connections panel on the LHS to the node that represents your application, then double-click on the Handler Mappings icon in the Features View tab. Check that the ExtensionlessUrlHandler-Integrated-4.0 handler is enabled (see below).
If that doesn't do the trick, double-check that you have the ASP.NET 4.5 Role enabled on the server. See http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-using-aspnet-35-and-aspnet-45#TOC301258515 for instructions.
Also make sure you application is running under an AppPool that is configured for .NET 4.0.
I recommend you to use Publish Tool in Visual Studio by right clicking on project in solution explorer to deploy resultant files on the web. Then try the followings:
Reinstall .Net framework and MVC using Web PI.
Put a dummy default.aspx file in the root folder (this will not be
used when MVC is working, but can get rid of this problem).
Try running the aspnet_regiis -i command in the Visual Studio 64
bit command prompt (with admin privileges), then deploy it.
Take a look at Default Document configuration in IIS.
I wish to be solved.
Seems like IIS has not considered your application as a web application. It must be a MVC version mismatch.
As it is tagged as MVC4, we have 3 inner versions in MVC4. Check the server for which version of MVC is installed.If it is not installed or if you dont want to install MVC in the server, set CopyLocal=true for all the assemblies that you have referred in your project and re-publish the application and deploy in the server.

Proper tutorial on setting up iis7 with an asp.net mvc4 application

My work has some dedicated web servers (Server 2008R2, IIS7). Currently everything done here before has just been asp.net webforms. For a new project I want to finally introduce them to MVC. I have a vanilla MVC application created in VS2013. I walked through some different sites and got it set up on my local IIS (full, not express) just fine. I can hit 'localhost' and see the site I created. I am using web deploy, and it worked very well.
After that I moved on to our development server. I set it all up the same (i.e new website in iis, web deploy set up with proper credentials, etc). Publishing from VS works. On the development server I see all the files there, but in IIS on the server (via RDP session) I cannot browse to it. It does not give me a 404 or 503 error, internet explorer just tells me that it can't find the address.
Based off the many, many articles I went through I did the following:
aspnet_regiis.exe -i (32 and 64 bit)
Made sure the server has Web Deploy 3.5 and Web Deploy tools 2.1 installed.
Added some lines to my web.config (see below)****.
made sure the server had .net 4.5 and mvc installed.
After all that it still will not show me the site. Anything I am missing? I would love to find a tutorial to walk me through baby-step by baby-step, but all I see out there assumes that you already have x and y set up, or you already know IIS like the back of your hand.
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
To deploy MVC4 Application onto IIS 7.5
Make sure that you installed the latest framework.
Go to %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe –ir for 32 bit or
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe –ir for 64 to register asp.net
To be able to work with sites in MVC for IIS7 ir IIS7.5 please update it (http://support.microsoft.com/kb/980368).(Good)
Make sure that there is:
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule"
preCondition="" />
<!-- any other modules you want to run in MVC
e.g. FormsAuthentication, Roles etc. -->
</modules>
in web.config. (Good)
Make sure that there is
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
in web.config.(Bad)
from own experience... use "Good"

How to Deploy an ASP.NET MVC Application onto Windows Server 2008 IIS 7.5?

I have built an MVC 3 application and I have a Web Server 2008 on which IIS 7.5 is installed.
In IIS, I created a new Site and under which an Application then I deployed all my physical files on that application folder:
C:\inetpub\wwwroot\DeveloperToolsPortal\Application
I have also configured my Application Pool so that it supports .NET 4. I also downloaded the MVC3 on this server from the asp.net/mvc3 website.
When I browse this application from IIS using the {0} url, I get the {1} error message:
{0}: http://localhost:85/Application/Home/Index
{1}: HTTP 500 Internal Server Error
The Site was configured to use port 85 as 80 was already taken by another Site.
I've also added the below configurations in the web.config file:
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<customErrors mode="Off"/>
Why is this getting this error? How could I fix it? Which step/s have I missed in configuring my application?
I also tried another thing. I added a simple .htm file under my application and tried openning it via IIS and it gave me the below error:
Internet Explorer cannot display the webpage
I'd guess there is something wrong with my IIS?!
Don't put it in a subdirectory of C:\inetpub\wwwroot
The problem is that by default, there's a web.config file in C:\inetpub\wwwroot, which IIS will read from, even though your site is not directly in that directory.
You can create another folder in C:\inetpub and put your site into there.
Also, you can have multiple sites running with the same port, but using different host headers.
Out of curiosity, where did port 85 come from? Try taking that out (the default port for HTTP is 80). Also, look in the application error log for additional info on the error. There is also a section of web.config that you can set so that detailed error messages will be displayed (which should not be set for production).
<customErrors mode="Off">
</customErrors>
I added some more features/services to my IIS using the Server Manager and registered asp.net with it using aspnet_regiis -ir and this error is resolved.

Sharepoint site running in a VM

Basic question...I have a site running in a VM, say the URL is http://localhost/sites/foo/default.aspx
I want to surf to the URL from my host box, so I get the IP of the VM, and I try:
http:///sites/foo/default.aspx.
When I do, I get an error:
<configuration>
<system.web>
<customErrors mode="RemoteOnly"/>
</system.web>
</configuration>
Shouldn't I be able to do this, isn't this basic?
I also tried using the IP on in a browser on the VM (instead of localhost), but I get the same error.
Thanks
That message means that IIS would like to display a .NET error to you, but your web.config file is not set up to allow that.
I'm not sure where the web.config file is located for sharepoint, but when you find it, you can change it to this:
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
That way, you'll be able to see the error message remotely.
You must to place that VM IP into your hosts file and to associate it with your Sharepoint real website (i.e., not localhost)

Resources