C# 无法从IIS(内部服务器500)使用Visual Studio 2015运行简单的ASP.NET MVC应用程序 Windows 10专业版 IIS 10 Visual Studio 2015(以管理员身份运行)

C# 无法从IIS(内部服务器500)使用Visual Studio 2015运行简单的ASP.NET MVC应用程序 Windows 10专业版 IIS 10 Visual Studio 2015(以管理员身份运行),c#,asp.net,asp.net-mvc,visual-studio,iis,C#,Asp.net,Asp.net Mvc,Visual Studio,Iis,我想从IIS而不是IIS Express运行,因为我有一个指向我的计算机的外部IP,并且我将从外部源接收消息。最终,我将使用WebAPI,但为了测试和设置IIS,我将使用一个简单的ASP.NET MVC 5 Web应用程序 我创建了一个新的ASP.NET MVC 5 Web应用程序,这是Visual Studio 2015 MVC模板的框架,然后我使用IIS Express运行了该应用程序,没有问题: 然后,我转到IIS 10并创建了一个新网站,其绑定为“localhost”: IIS中此新

我想从IIS而不是IIS Express运行,因为我有一个指向我的计算机的外部IP,并且我将从外部源接收消息。最终,我将使用WebAPI,但为了测试和设置IIS,我将使用一个简单的ASP.NET MVC 5 Web应用程序

我创建了一个新的ASP.NET MVC 5 Web应用程序,这是Visual Studio 2015 MVC模板的框架,然后我使用IIS Express运行了该应用程序,没有问题:

然后,我转到IIS 10并创建了一个新网站,其绑定为“localhost”:

IIS中此新网站的物理路径为
C:\inetpub\wwwroot\AspNetMvcTest

然后我转到web应用程序属性并切换到IIS。有人问我是否要创建一个新的虚拟目录:

我单击了,如果您单击,操作将被取消,您将无法保存Web应用程序属性。必须单击才能在Visual Studio中更改为本地IIS属性

然后,我被告知IIS“localhost”已映射到另一个文件夹,我是否要重新映射:

我单击了“是”。如果单击“否”,则会再次更改未保存的Web应用程序属性,并且不会在Visual Studio中使用本地IIS

这很有趣,VisualStudio正在尝试更改“虚拟目录”,因为它将实际更改IIS网站的物理路径,而不是添加虚拟目录。虚拟目录是一个文件夹,位于IIS网站的物理路径之外,IIS将其视为物理路径文件夹的一部分。但我离题了

现在我被告知“虚拟目录”已成功创建:

现在我们可以看看Visual Studio 2015对IIS 10所做的更改:

我们在绑定到localhost的网站上没有虚拟目录:

Visual Studio 2015已更改我的物理路径,并将其映射到我的简单ASP.NET MVC 5 Web应用程序所在的目录:

因此,尽管Visual Studio 2015在更改ASP.NET MVC 5 Web应用程序属性时使用了“虚拟目录”,但Visual Studio 2015只关注物理路径,这是我在IIS中看到的唯一更改

现在查看内部服务器错误500详细信息

我在Visual Studio 2015中按F5,F12工具显示存在内部服务器500错误:

如果我们在Fiddler中检查请求和响应,则有500个错误的内容长度为0

为了尝试获取500错误的更多详细信息,我已在我的Web.Config中关闭了自定义错误,并添加了httpErrors Detailed和PassThrough:

我在Global.asax中添加了“catch all”异常处理,没有断点命中:

这是我的调用堆栈,它是空的,屏幕截图中的任何断点都不会被击中:

我在我的解决方案中添加了一个控制台应用程序作为“Set as Startup Project”,下面是我的调用堆栈,证明可以达到断点:

这是事件查看器->应用程序的屏幕截图,我清除了应用程序日志,在Visual Studio 2015中按F5,刷新了应用程序日志,它仍然是空的:

我认为问题是Visual Studio更改物理路径后的文件夹权限问题

因此,我添加了
IIS\u IUSRS
,并提供了完全控制权,即使该帐户不需要对物理路径目录具有那么高的权限级别:

我的ApplicationPoolIdentity是Framework v4.0和ApplicationPoolIdentity ApplicationPoolIdentity被分配为用户组以及IIS_IUSRS组的成员身份:

我尝试将特定的应用程序池添加到ASP.NET MVC应用程序物理目录的安全属性中,因此首先我发现Visual Studio F5进程连接到:

我将“DefaultAppPool”和我的IIS应用程序池“IIS APPPOOL\AspNetMvcTest”添加到物理文件夹安全性中

我将index.html添加到Web应用程序的物理文件夹中,但这不起作用:

<html>
<head>
</head>
<body>
<h4 style="color: black">hello world</h4>
</body>
</html>

你好,世界
我已将IIS网站物理路径移动到inetpub/wwwroot,返回到我创建网站时创建的目录,我甚至无法浏览到简单的HTML文件,我收到相同的空500错误

所以现在我被卡住了,不知道还能做什么。TL;DR

在阅读答案的其余部分之前,您可能只需要运行aspnet_regis,您可以通过cmd或Web平台安装程序中的酷工具来执行此操作,如果您搜索“ASP.NET”,则可以安装一个方便的“执行ASP.NET IIS注册工具”

原始答案:

感谢所有人的帮助,我应该做的第一件事是后退一步,测试一个来自IIS网站的index.html“Hello World”测试文件,其中c:\inetpub\wwwroot作为IIS网站的物理路径

当您第一次安装IIS时,您有一个默认网站,请浏览该网站并确保其正常工作。这是一台新机器的良好开端。但我只是在安装IIS后删除了该IIS站点

我为修复所采取的步骤:

  • 我通过控制面板->程序和功能-> Windows功能
  • 重新启动我的电脑
  • 按照以下步骤安装了适用于Windows 10的IIS
  • 通过创建一个网站,使用DefaultAppPool,然后浏览localhost,测试了IIS,这很有效(同样,当你第一次安装IIS时,你有这个网站,但我几天前在我的网站上删除了它)
  • 我发现我的简单的ASP.NET网站仍然不起作用,它是publi
    C:\Windows\Microsoft.NET\Framework64\v4.5.<version>