2012-03-18 67 views
2

我试图将我的默认页面设置为在IIS7.5上运行的ASP.NET网站上的Index.html。我不断得到一个404.4,它告诉我一个处理程序没有设置。但是,我为我的html页面设置了<handler><httpHandlers>值。我还指定了默认文档。但我一直得到404.4。什么导致IIS 7.5上的404.4传递静态文件?

我可以浏览到myuri/index.html,但我无法得到它作为默认加载。

有什么建议吗?

这里是我的web.config

<?xml version="1.0" encoding="UTF-8"?> 

<configuration> 
    <appSettings /> 
    <connectionStrings /> 
    <system.web> 
    <authentication mode="Windows" /> 
    <customErrors mode="Off" /> 
    <compilation debug="true" targetFramework="4.0" /> 
    <httpHandlers> 
     <add path="*.html" verb="*" type="System.Web.StaticFileHandler" /> 
     <add path="~/assets/*" verb="*" type="System.Web.StaticFileHandler"/> 
     <add verb="*" path="*.rastahook" validate="false" type="OpenRasta.Hosting.AspNet.OpenRastaRewriterHandler, OpenRasta.Hosting.AspNet" /> 
    </httpHandlers> 
    <httpModules> 
     <add name="OpenRasta" type="OpenRasta.Hosting.AspNet.OpenRastaModule, OpenRasta.Hosting.AspNet" /> 
    </httpModules> 
    <pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID" /> 
    </system.web> 
    <system.webServer> 
    <httpErrors errorMode="Detailed" /> 
    <asp scriptErrorSentToBrowser="true" /> 
    <defaultDocument enabled="true"> 
     <files> 
     <clear /> 
     <add value="/index.html" /> 
     </files> 
    </defaultDocument> 
    <rewrite> 
     <rules> 
     <rule name="Remove WWW" stopProcessing="true"> 
      <match url="^(.*)$" /> 
      <conditions> 
      <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" /> 
      </conditions> 
      <action type="Redirect" url="threetasks.apphb.net{PATH_INFO}" redirectType="Permanent" /> 
     </rule> 
     </rules> 
    </rewrite> 

    <httpCompression directory="%SystemDrive%\websites\_compressed" minFileSizeForComp="1024"> 
     <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" /> 
     <staticTypes> 
     <add mimeType="text/*" enabled="true" /> 
     <add mimeType="message/*" enabled="true" /> 
     <add mimeType="application/javascript" enabled="true" /> 
     <add mimeType="application/json" enabled="true" /> 
     <add mimeType="*/*" enabled="false" /> 
     </staticTypes> 
    </httpCompression> 
    <urlCompression doStaticCompression="true" /> 
    <httpProtocol> 
     <customHeaders> 
     <add name="X-UA-Compatible" value="IE=Edge,chrome=1" /> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     </customHeaders> 
    </httpProtocol> 

    <validation validateIntegratedModeConfiguration="false" /> 
    <modules> 
     <add name="OpenRasta" type="OpenRasta.Hosting.AspNet.OpenRastaModule, OpenRasta.Hosting.AspNet" /> 
    </modules> 
    <handlers accessPolicy="Script,Read"> 
     <clear /> 
     <add name="StaticFile" path="index.html" verb="*" 
      modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /> 
     <add name="StaticFiles" path="~/assets/*" verb="*" 
      modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /> 
     <add name="OpenRasta" verb="*" path="*.rastahook" 
      type="OpenRasta.Hosting.AspNet.OpenRastaRewriterHandler, OpenRasta.Hosting.AspNet" /> 
    </handlers> 
    <staticContent> 
     <!-- Set expire headers to 30 days for static content--> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" /> 

     <remove fileExtension=".css" /> 
     <mimeMap fileExtension=".css" mimeType="text/css; charset=UTF-8" /> 
     <remove fileExtension=".js" /> 
     <mimeMap fileExtension=".js" mimeType="text/javascript; charset=UTF-8" /> 
     <remove fileExtension=".json" /> 
     <mimeMap fileExtension=".json" mimeType="application/json; charset=UTF-8" /> 
     <remove fileExtension=".rss" /> 
     <mimeMap fileExtension=".rss" mimeType="application/rss+xml; charset=UTF-8" /> 
     <remove fileExtension=".html" /> 
     <mimeMap fileExtension=".html" mimeType="text/html; charset=UTF-8" /> 
     <remove fileExtension=".xml" /> 
     <mimeMap fileExtension=".xml" mimeType="application/xml; charset=UTF-8" /> 

     <mimeMap fileExtension=".mp4" mimeType="video/mp4" /> 
     <mimeMap fileExtension=".m4v" mimeType="video/m4v" /> 
     <mimeMap fileExtension=".ogg" mimeType="video/ogg" /> 
     <mimeMap fileExtension=".ogv" mimeType="video/ogg" /> 
     <mimeMap fileExtension=".webm" mimeType="video/webm" /> 

     <!--<mimeMap fileExtension=".svg" mimeType="images/svg+xml" />--> 
     <!--<mimeMap fileExtension=".svgz" mimeType="images/svg+xml" />--> 

     <remove fileExtension=".eot" /> 
     <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" /> 
     <mimeMap fileExtension=".otf" mimeType="font/otf" /> 
     <mimeMap fileExtension=".woff" mimeType="font/x-woff" /> 
    </staticContent> 
    </system.webServer> 
</configuration> 

回答

0

我们最终做的是拆分项目。我们的目标是拥有一个思考JavaScript前端的服务后端。其中一些是尝试我们拥有的不同模式和想法。我正在写这个服务,我的朋友正在写前端。在谈到它之后,他们不需要需要在同一个项目中。

也就是说,我将创建一个API,他将创建一个可以在任何地方托管的客户端。考虑到这一点,我的网站现在只做API工作,并且不需要提供任何HTML作为默认页面。

2

在IIS 7.5处理静态内容,则需要通过在单元内的web.config文件中以下元素来注册MIME类型。我主要用于mp4视频与404.4错误出现。

<staticContent> 
<mimeMap fileExtension=".mp4" mimeType="video/mp4" /> 
<!-- for html may be --> 
<mimeMap fileExtension=".html" mimeType="text/html" /> 

</staticContent> 
+0

这已经在配置文件中,从底部开始约有20行。 – taylonr 2012-03-18 20:45:22

0

退一步......你在哪里设置默认文档?

如果你在web.config中设置它,那么你就是说ASP.Net运行时将会/应该处理.html扩展名。换句话说,web.config属于ASP.Net。

您是否在IIS中设置了默认文档? 如果它只是一个静态文件,则不需要ASP.Net甚至会涉及 - IIS应该处理开箱即用的htm/html文件。

+0

我试过两种。我将它设置在web.config中,因为我试图部署到AppHarbor,并且我无法使用IIS进行操作。 – taylonr 2012-03-19 01:28:05

+0

不错(appharbor):)嗯...所以如果ASP.Net应该处理.html是映射集?我没有亲自试过这个:http://stackoverflow.com/questions/890814/what-is-the-proper-way-to-map-html-to-the-asp-net-pipeline-in-iis7 – EdSF 2012-03-19 02:33:41

+0

再走一步(简化) - 是否有任何理由,.html文件不能是一个aspx文件(扩展名)?仅仅因为它的所有“静态”/无服务器端代码,并不意味着它不能是一个aspx文件。那么所有这些设置甚至不是必需的(?)。 – EdSF 2012-03-21 01:04:52

相关问题