我有一个在共享主机上使用ASP.NET 4.0运行在IIS 7.5服务器上的网站,但完全信任.
该站点是一个基本的"文件浏览器",允许访问者登录并显示可用的文件列表,显然,下载文件.静态文件(主要是pdf文件)位于名为data的站点上的子文件夹中,例如http://example.com/data/ ...
该站点使用ASP.NET表单身份验证.
我的问题是:如何让ASP.NET引擎处理数据文件夹中静态文件的请求,以便ASP.NET对文件请求进行身份验证,并且用户无法深度链接到文件和抓取他们不被允许的文件?
最好的问候,埃吉尔.
我有一个正在运行的 Web API 2.0 localhost:4512,我想拦截对域发出的所有请求,localhost:4512无论它们是否由特定路由处理。例如,我想捕获对localhost:4512/abc.dfsada或的请求localhost:4512/meh/abc.js
我已经使用 DelegatingHandler 尝试过此操作,但不幸的是,这只拦截对处理的路由发出的请求:
public class ProxyHandler : DelegatingHandler
{
private async Task<HttpResponseMessage> RedirectRequest(HttpRequestMessage request, CancellationToken cancellationToken)
{
var redirectLocation = "http://localhost:54957/";
var localPath = request.RequestUri.LocalPath;
var client = new HttpClient();
var clonedRequest = await request.Clone();
clonedRequest.RequestUri = new Uri(redirectLocation + localPath);
return await client.SendAsync(clonedRequest, HttpCompletionOption.ResponseHeadersRead, cancellationToken);
}
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
return RedirectRequest(request, cancellationToken);
}
}
Run Code Online (Sandbox Code Playgroud)
在 WebConfig.cs 中:
config.MessageHandlers.Add(new ProxyHandler());
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute( …Run Code Online (Sandbox Code Playgroud)