代码之家  ›  专栏  ›  技术社区  ›  Ananth

找不到IIS Express静态文件

  •  4
  • Ananth  · 技术社区  · 6 年前

    让我先说一下,我有linux的背景,在windows上开发对我来说是相当新的。

    我正在处理一个在visual studio中打开的asp.net项目。项目最初设置为通过IIS运行。vs很有帮助地问我是否想试试iis express,我答应了。这个应用程序一开始有点小毛病,但那是因为代码太老太大了。在解决这些问题后,应用程序加载正常,除了任何静态文件。对于文件系统中实际存在的资源,我得到一个404未找到。

    您在照片中看到的物理路径存在于web.config文件旁边的文件夹中。我可以从图形目录的同级exec目录加载aspx文件。图形目录是我试图加载到这张图片中的favicon.ico文件所在的位置。

    我今天已经阅读了很多关于iis和iis express的文档,没有一个提到必须对静态文件做任何特殊的操作。也许我只是太胖了。如果需要我的web.config,请告诉我,我可以在这里附加它。

    IIS Express Error page

    编辑:

    1)在这方面取得了一些进展。在全面的iis下,我也得到了完全相同的错误。我的静态内容没有出现。

    2)这里是web.config

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <configSections>
        <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
      </configSections>
      <!--
        For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.
    
        The following attributes can be set on the <httpRuntime> tag.
          <system.Web>
            <httpRuntime targetFramework="4.5" />
          </system.Web>
      -->
      <loggingConfiguration name="loggingConfiguration" tracingEnabled="true" defaultCategory="General">
        <listeners>
          <add name="Event Log Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" source="Enterprise Library Logging" formatter="Text Formatter" log="" machineName="." traceOutputOptions="DateTime, Timestamp, ProcessId" />
          <add name="W3C Rolling Flat File Trace Listener" type="App.W3CLogTraceListener, App, Version=1.0.0.0, Culture=neutral" listenerDataType="App.W3CLogTraceListenerData, App, Version=0.0.0.0, Culture=neutral" fileName="appA65.log" fileHeader="date time session-id client-ip page url form-data cookie" footer="" formatter="Text Formatter" header="" rollInterval="Midnight" timeStampPattern="yyyy-MM-dd" />
        </listeners>
        <formatters>
          <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" template="{message}" name="Text Formatter" />
        </formatters>
        <logFilters>
          <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Filters.LogEnabledFilter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" enabled="false" name="Logging Enabled Filter" />
        </logFilters>
        <categorySources>
          <add switchValue="All" name="General">
            <listeners>
              <add name="W3C Rolling Flat File Trace Listener" />
            </listeners>
          </add>
        </categorySources>
        <specialSources>
          <allEvents switchValue="All" name="All Events" />
          <notProcessed switchValue="All" name="Unprocessed Category" />
          <errors switchValue="All" name="Logging Errors &amp; Warnings">
            <listeners>
              <add name="Event Log Listener" />
            </listeners>
          </errors>
        </specialSources>
      </loggingConfiguration>
      <appSettings>
        <!-- To enable or disable IETP user session management, true to enable, false to disable -->
        <add key="IetpSessionEnabled" value="false" />
        <!-- To specifies where the folder for session files -->
        <add key="IetpUserSessionServerPath" value="d:\apps\ietpusersessions" />
        <!-- To determines the duration of s user session in terms of minutes -->
        <add key="IetpUserSessionLengthInMinutes" value="600" />
        <!-- to enable/disable sending out email on exceptions, true to enable, false to disable -->
        <add key="EmailAlertEnabled" value="true" />
        <!-- the exception email alert list, seperated by comma -->
        <add key="EmailAlertToAddress" value="alice@example.com" />
        <!-- email sender address -->
        <add key="EmailAlertFromAddress" value="bob@example.com" />
        <!-- to enable or disable Pdf print, wehn set "true", all user local print requests will be -->
        <!-- processed on the server and the final PDF will be rended in browser -->
        <add key="PdfPrintEnabled" value="true" />
        <add key="PdfPrintServiceUrl" value="https://example.com/PdfPrintService/PdfPrintService/PDFPrint.aspx" />
        <add key="FooterDisclaimer" value="Footer here" />
      </appSettings>
      <system.web>
        <httpRuntime targetFramework="4.0" requestValidationMode="2.0" />
        <!-- <httpRuntime executionTimeout="300" /> -->
        <compilation debug="true" defaultLanguage="c#" targetFramework="4.5.1" />
        <customErrors defaultRedirect="~/exec/generalError.aspx" mode="Off" />
        <sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" cookieless="false" stateNetworkTimeout="11" timeout="600" />
        <pages controlRenderingCompatibilityVersion="4.0" />
      </system.web>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
          <remove name="URLWriteHttpModule" />
          <add name="URLWriteHttpModule" type="App.URLWriteHttpModule" />
        </modules>
        <defaultDocument>
          <files>
            <clear />
            <add value="default.aspx" />
            <add value="Default.asp" />
            <add value="Default.htm" />
            <add value="index.htm" />
            <add value="index.html" />
          </files>
        </defaultDocument>
        <tracing>
          <traceFailedRequests>
            <add path="*">
              <traceAreas>
                <add provider="ASP" verbosity="Verbose" />
                <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
                <add provider="ISAPI Extension" verbosity="Verbose" />
                <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
              </traceAreas>
              <failureDefinitions timeTaken="00:00:00" statusCodes="500-599" verbosity="Error" />
            </add>
          </traceFailedRequests>
        </tracing>
            <handlers accessPolicy="Read, Execute, Script" />
      </system.webServer>
    </configuration>
    

    最后编辑 - 我从来都搞不清到底出了什么问题。操作系统的重新安装解决了这个问题,我再也无法复制它。

    3 回复  |  直到 6 年前
        1
  •  0
  •   oakman    6 年前
        2
  •  0
  •   Pavel Levchuk    6 年前

    检查静态内容是否通过msbuild发布。如果没有,请将这些行添加到.csproj文件中:

    <ItemGroup>
        <Content Include="graphics\**\*.*" />
    </ItemGroup>
    
        3
  •  0
  •   cdev    6 年前

    你能加上这个吗?

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
    

    IIS Pre conditions

    是否在IIS中启用了静态内容?

    enter image description here

    1. 检查你的gloable.asax这种线路存在

      routes.ignoreroute(“{resource}.axd/{*pathinfo}”);或 routes.ignoreroute(“{ favicon},新的{favicon=@“(. ?)favicon.ico(/.*?“(});

    或者类似的东西

    1. 注释url重写部分并检查其工作情况?

    我相信您会仔细检查文件是否存在,或者路径是否正确:)

    推荐文章