Я обновляю свой проект до ASPNET5. Мое приложение - веб-приложение AngularJS, которое использует маршрутизацию URL-адресов HTML5 (HTML5 History API).ASP.NET 5 История HTML5
В моем предыдущем приложении, которое я использовал URL Rewrite Module IIS с помощью следующего кода:
<system.webServer>
<rewrite>
<rules>
<rule name="MainRule" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" matchType="Pattern" pattern="api/(.*)" negate="true" />
<add input="{REQUEST_URI}" matchType="Pattern" pattern="signalr/(.*)" negate="true" />
</conditions>
<action type="Rewrite" url="Default.cshtml" />
</rule>
</rules>
</rewrite>
<system.webServer>
Я понимаю, что я мог перенести это, но я хочу, чтобы свести к минимуму моих окон зависимостей. Из моего чтения я считаю, что должен использовать ASP.NET 5 Middleware для этого.
Я думаю, что код будет выглядеть примерно так, но я думаю, что я довольно далеко.
app.UseFileServer(new FileServerOptions
{
EnableDefaultFiles = true,
EnableDirectoryBrowsing = true
});
app.Use(async (context, next) =>
{
if (context.Request.Path.HasValue && context.Request.Path.Value.Contains("api"))
{
await next();
}
else
{
var redirect = "http://" + context.Request.Host.Value;// + context.Request.Path.Value;
context.Response.Redirect(redirect);
}
});
По сути, я хотел что-нибудь маршрут, который содержит /api
или /signalr
. Любые предложения по наилучшему способу выполнения этого в ASPNET5?
Да, вы можете достичь этого с помощью «промежуточного программного обеспечения» –
Уход, чтобы показать, как вы можете это сделать? – amcdnl
На 'GitHub' существует множество образцов« промежуточного слоя ». Один из них я написал: https://github.com/aguacongas/chatle/tree/dev/src/ChatLe.HttpUtility –