Asp.net IIS 8-默认文档-找不到资源
我试图理解为什么在浏览虚拟目录时我的默认文档没有出现。如果我像我应该能够的那样浏览该网站,我会得到以下信息:Asp.net IIS 8-默认文档-找不到资源,asp.net,.net,asp.net-mvc-4,iis,iis-8,Asp.net,.net,Asp.net Mvc 4,Iis,Iis 8,我试图理解为什么在浏览虚拟目录时我的默认文档没有出现。如果我像我应该能够的那样浏览该网站,我会得到以下信息: 但是,如果我将页面添加到URL,它会出现: 有人建议删除除真实文档之外的所有默认文档(在IIS中)。我试过了(下图),但没用 为什么IIS在使用根URL(http://localhost/SignalRChat) 这是删除默认文档后web.config的相关部分: <defaultDocument> <files> <re
但是,如果我将页面添加到URL,它会出现:
有人建议删除除真实文档之外的所有默认文档(在IIS中)。我试过了(下图),但没用
为什么IIS在使用根URL(
http://localhost/SignalRChat
)
这是删除默认文档后web.config的相关部分:
<defaultDocument>
<files>
<remove value="default.aspx" />
<remove value="iisstart.htm" />
<remove value="index.html" />
<remove value="index.htm" />
<remove value="Default.asp" />
<remove value="Default.htm" />
<add value="ChatPage.cshtml" />
</files>
</defaultDocument>
这是处理程序部分:
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
您的目录浏览似乎在IIS中被禁用。刚刚在IIS中启用了目录浏览。它会解决你的问题 更多详情请访问
希望这会有所帮助 您可以创建网站/应用程序安装程序。它具有设置启动页面选择的选项 因此,如果键入localhost/SignalIRChat,请在安装程序中和安装后将ChatPage.cshtml设置为启动页 您将看到ChatPage.cshtml的内容,而不会在地址栏中显示“ChatPage.cshtml”名称
它会解决你的问题 您需要在
处理程序
部分的末尾添加此处理程序
:
<add name="StaticFile" path="*" verb="*" type="" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" scriptProcessor="" resourceType="Either" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" />
删除建议的
静态文件
处理程序(如果仍然存在)。从标记中,看起来您使用MVC和使用razor视图引擎(cshtml)的视图。在MVC中,URL不会直接映射到文档。因此,讨论不应该是关于默认文档、处理程序和IIS配置
URL必须与调用控制器上的操作的已定义路由匹配。然后,此操作将呈现视图(*.cshtml)
尝试修复路由以处理请求。如果您需要更多帮助,您应该使用更多有关管制员和路线的信息更新您的问题。这可能是MVC问题 您可能需要从索引重定向到SignalChart控制器中的此其他操作。
类似以下内容:
public ViewResult Index()
{
return View("ChatPage");
}
当您的请求没有指向URL末尾的特定文件名时,404错误的另一个可能原因是您的IIS请求过滤规则拒绝无扩展的请求 要确定这一点,请找出404错误的子代码。 通常是404.7,但可能有一些变化 此外,您还可以通过将
添加到web.config中,尝试显式允许无扩展请求,如下所示:
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<add fileExtension="." allowed="true" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
请告诉我它是否有帮助,或者在子代码中发布您的404错误。您是否要求查看
部分?如果我将ChatPage.cshtml的名称更改为default.cshtml,它将自动显示。您是否可以尝试使用列表下的选项而不是单个页面删除?这些处理程序是否有原因?因为那些ExtensionlessUrlHandler
处理程序忽略了您的DefaultDocument
配置。@Edward今晚我可以试试。我真的认为这不应该是答案。首先,它不起作用。其次,您提供的链接声明:当您希望客户端浏览器显示一个网页,该网页列出了目录的内容,而请求未指定文档名称,并且IIS无法返回默认文档时,启用目录浏览。如果IIS在目录中找不到与IIS默认文档列表中指定的文件名匹配的文件,或者在IIS中禁用了默认文档功能,则无法返回默认文档。
我不想显示内容,并且指定了默认文档。而且我没有禁用默认文档功能。谢谢,但我不想使用安装程序来完成这项工作。我只是在使用VS.Now中的发布选项,如果您知道安装程序是如何修复的,那会很有帮助,我收到一个错误:无法添加类型为“add”且唯一键属性“name”设置为“StaticFile”的重复集合项。
我不知道为什么;没有其他名为StaticFile的元素。我修改了答案。请看一看我试过你的建议了。我仍然得到:找不到资源。
谢谢您的尝试。我已经准备好放弃了,只要把它命名为索引什么的。为我修正了它!谢谢。IIS 8上是否默认启用了请求筛选?(因为我不必在windows 7/IIS 7.5上执行此操作)
<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<add fileExtension="." allowed="true" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>