Bri*_*den 12 c# asp.net iis asp.net-mvc visual-studio
我想从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.
这是有趣的Visual Studio正在尝试更改"虚拟目录",因为它将实际更改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"异常处理,没有断点命中
:
这是我的调用堆栈,它是空的,屏幕截图中的断点都没有被击中:
我在我的解决方案中添加了一个控制台应用程序作为"设置为启动项目",这是我的调用堆栈,证明可以点击一个断点:
这是事件查看器 - >应用程序的屏幕截图,我清除了应用程序日志,在Visual Studio 2015中按下了F5,刷新了应用程序日志,它仍然是空的:
在Visual Studio更改物理路径后,我认为问题是文件夹权限
所以我添加IIS_IUSRS并提供了完全控制,即使帐户不需要物理路径目录的高级别权限:
我的ApplicationPoolIndentity是Framework v4.0和ApplicationPoolIdentity ApplicationPoolIdentity被分配了Users组和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>
Run Code Online (Sandbox Code Playgroud)
我已经将IIS网站物理路径移动到inetpub/wwwroot回到我创建网站时创建的目录,我甚至无法浏览到一个简单的HTML文件,我得到相同的空500错误
所以现在我被卡住了,不知道还能做什么.
TL; DR
在阅读剩下的答案之前,您可能只需要运行aspnet_regiis,您可以从cmd或通过Web平台安装程序中的酷工具执行此操作,如果您搜索"ASP.NET",则会有一个方便的"执行ASP.NET IIS注册"工具"你可以安装.
原答案:
感谢大家的所有帮助,我应该做的第一件事是退后一步,从IIS网站测试一个index.html"Hello World"测试文件,其中c:\ inetpub\wwwroot作为IIS网站的物理路径.
当您第一次安装IIS时,您有一个默认网站,浏览到它并确保它有效.是一台新机器的良好开端.但我刚安装IIS后删除了IIS站点
我采取的修复步骤:
| 归档时间: |
|
| 查看次数: |
8300 次 |
| 最近记录: |