C# 无法从IIS(内部服务器500)使用Visual Studio 2015运行简单的ASP.NET MVC应用程序 Windows 10专业版 IIS 10 Visual Studio 2015(以管理员身份运行)
我想从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# 无法从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中此新
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站点
我为修复所采取的步骤:
C:\Windows\Microsoft.NET\Framework64\v4.5.<version>