10

我试图理解为什么我浏览虚拟目录时没有出现我的默认文档。如果我浏览到我应该能够的网站,我会得到这个:

在此处输入图像描述


但是,如果我将页面添加到 URL,它会出现:

在此处输入图像描述


一个SO 答案建议删除除真实文档之外的所有默认文档(在 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>
4

6 回答 6

2

当您的请求未指向 URL 末尾的特定文件名时,404 错误的另一个可能原因是您的 IIS 请求过滤规则拒绝无扩展名请求。

要确定它,请找出 404 错误的子代码。通常是 404.7,但可能会有一些变化,

此外,您可以尝试通过添加到您的 web.config 来明确允许无扩展请求,如下所示:<add fileExtension="." allowed="true" />

  <system.webServer>
    <security>
      <requestFiltering>
        <fileExtensions>
          <add fileExtension="." allowed="true" />
        </fileExtensions>
      </requestFiltering>
    </security>
  </system.webServer>

请让我知道它是否有帮助或使用子代码发布您的确切 404 错误。

于 2014-10-05T14:30:24.793 回答
1

从您的标签看来,您使用 MVC 和使用 razor 视图引擎 (cshtml) 的视图。在 MVC 中,URL 不会直接映射到文档。所以讨论不应该是关于默认文档、处理程序和 IIS 配置。

URL 必须与定义的路由匹配,该路由调用控制器上的操作。然后,此操作将呈现视图 (*.cshtml)。

尝试修复您的路线以便能够处理请求。如果您需要更多帮助,您应该使用有关控制器和路线的更多信息来更新您的问题。

于 2013-06-11T14:04:37.740 回答
0

您需要在部分Handler末尾添加此handlers内容:

<add name="StaticFile" path="*" verb="*" type="" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" scriptProcessor="" resourceType="Either" requireAccess="Read" allowPathInfo="false" preCondition="" responseBufferLimit="4194304" />

更新:

由于.cshtml文件默认被阻止,因此您需要:

    <handlers>
        <remove name="cshtml-ISAPI-4.0_64bit" />
        <remove name="cshtml-ISAPI-4.0_32bit" />
        <remove name="cshtml-Integrated-4.0" />
        <remove name="cshtm-ISAPI-4.0_64bit" />
        <remove name="cshtm-ISAPI-4.0_32bit" />
        <remove name="cshtm-Integrated-4.0" />
    </handlers>

    <staticContent>
        <mimeMap fileExtension=".cshtml" mimeType="text/html" />
    </staticContent>

删除StaticFile建议的处理程序(如果仍然存在)。

于 2013-06-03T07:08:55.740 回答
0

您可以制作一个网站/应用程序安装程序。它具有设置启动页面选择的选项。

因此,将 ChatPage.cshtml 设置为安装程序中的启动页面,如果您在安装后键入 localhost/SignalIRChat

您将看到 ChatPage.cshtml 的内容,而不会在地址栏中显示“ChatPage.cshtml”名称。

它将解决您的问题。

于 2013-06-03T07:00:32.340 回答
0

这可能是 MVC 问题。

您可能需要从索引重定向到 SignalRChat 控制器中的其他操作。
像这样的东西:

public ViewResult Index()
{
    return View("ChatPage");
}
于 2013-06-11T15:49:14.033 回答
-4

您的目录浏览似乎在 IIS 中被禁用。刚刚在 IIS 中启用目录浏览。它会解决你的问题。

访问http://technet.microsoft.com/en-us/library/cc731109%28v=ws.10%29.aspx了解更多详情。

希望这会有所帮助。

于 2013-06-02T12:01:05.790 回答