我在一个特定的文件夹中有一些图像需要保护。为此,我创建了一个中间件来处理它。我添加了下面的代码。它是C#中的.NET 7 MVC。
我的代码的工作,所以基本上,如果用户有权限,我返回的图像。我测试了它从浏览器使用正确的URL。它适用于单一的图像请求。
我遇到的问题是,当我从同一个页面请求多个图像(用户对所有图像都有权限)时,返回的图像很可能是最后一个图像,甚至Trace.WriteLine也无法记录正确的请求图像文件名,它随机记录请求,但大多数是最后一个,对于我的示例将是img_3.jpg。
请帮助我,什么是问题,如何解决它。非常感谢!
请求导致的问题如下:
<img src="~/assets/album/image/img_1.jpg" class="img-fluid" />
<img src="~/assets/album/image/img_2.jpg" class="img-fluid" />
<img src="~/assets/album/image/img_3.jpg" class="img-fluid" />
个字符
2条答案
按热度按时间wfauudbj1#
您正在使用conventional-based middleware-您的中间件在每个应用程序生命周期中构建一次。这就是为什么最后一个请求会覆盖
RequestPathFull
。可能,您的中间件会工作,但作为factory-based middleware,它是根据请求创建的。sulc1iza2#
我将“Map”改为“SendFileAsync”,并且invoke调用不返回文件并继续下一步,所以如果有权限,让静态文件中间件稍后处理它。从我的测试来看,它是工作的。但我仍然想弄清楚为什么“map”和SendFileAsync不工作。
个字符