Rest 在.Net core webAPI上公开子目录

Rest 在.Net core webAPI上公开子目录,rest,.net-core,web-config,asp.net-core-1.0,Rest,.net Core,Web Config,Asp.net Core 1.0,我有一个带有.NETCore1的RESTfulAPI项目,它有一个包含一些公共文件(例如:图像)的目录。我创建了一个按文件名检索文件的控制器,但我认为它使用CPU,并且有很多延迟 例如: wwwroot - refs - runtimes + public - logo.png + subdir - icon1.png - icon2.png 我想从这样的url公开访问此目录 https://MyAPIDomain.com/public/logo

我有一个带有.NETCore1的RESTfulAPI项目,它有一个包含一些公共文件(例如:图像)的目录。我创建了一个按文件名检索文件的控制器,但我认为它使用CPU,并且有很多延迟

例如:

wwwroot
- refs
- runtimes
+ public
    - logo.png
    + subdir
        - icon1.png
        - icon2.png
我想从这样的url公开访问此目录

https://MyAPIDomain.com/public/logo.png
https://MyAPIDomain.com/public/subdir/icon1.png
我想让IIS直接处理这些文件,而无需使用.net进行处理。此外,它们应该是可恢复的下载和浏览器可以缓存的主题。我该怎么做

web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!--
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\MyApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
  </system.webServer>
</configuration>

ASP.NET核心使用IIS作为反向代理。这意味着所有请求都会转发到ASP.NET核心应用程序。时期这是没有办法的。让IIS直接为文件提供服务的唯一方法是将其托管在IIS站点的虚拟目录中。然后,由于该特定路径现在由IIS处理,它将不会转发到您的ASP.NET核心应用程序。但是,这意味着您的ASP.NET核心应用程序无法再使用该路径。换句话说,您不能创建类似“public”的虚拟目录,也不能在
wwwroot/public
下单独提供文件


也就是说,静态文件中间件在管道中运行得比较早,而且相当轻量级。老实说,我怀疑您是否会发现,与在IIS中直接托管静态文件相比,性能下降了很多(如果有的话)。使用静态文件中间件处理诸如设置缓存头之类的事情也容易得多。我建议您保持现状。

我的第一个问题是,为什么您希望在REST API中托管…@rickvdbosch,它们并不完全是静态的。他们是一些上传的文件,我需要公开。以上只是一个示例。这些文件称为静态文件;)看看我放在那里的链接。可能会对您有所帮助。那么,我是否可以将项目中的一个现有目录设置为虚拟目录,然后,在写入时使用真实名称,在读取时使用虚拟名称?