ASP.net WebAPI忽略web.config?

时间:2016-06-10 13:06:21

标签: angularjs asp.net-web-api web-config .net-core-rc2

我在wwwroot中设置了一个web.config,将所有请求重定向到index.html以供angularjs处理。这会排除现有文件和文件夹以及/api中的任何内容。

问题是,它不是那样工作的。对于文件不存在的任何内容,我只会得到空白页。

这是我的web.config:

<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
      <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>
    <httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
    <rewrite>
      <rules>
        <rule name="IndexHomeRule" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
            <add input="{REQUEST_URI}" matchType="Pattern" pattern="^/api/" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

我无法弄清楚它仍然试图加载文件而不是将它们重定向到index.html

的任何理由

我使用的是.NET Core RC2,我设置了静态文件和默认文件。我正在使用VS2015。我从一开始就将项目设置为WebAPI。不是空的。

1 个答案:

答案 0 :(得分:0)

您可以使用Microsoft.AspNetCore.SpaServices:

app.UseMvc(options =>
{
    options.MapRoute("Api",
        template: "api/{controller}/{action?}/{*path}",
        defaults: new { controller = "Home" });

    options.MapSpaFallbackRoute("spa-fallback", new { controller = "Home", action = "Index" });
 });