Используйте netstandard 2.0 middleware в ASP.NET 4.5.2 WebApi - PullRequest
0 голосов
/ 09 апреля 2019

Я создал библиотеку в netstandard2.0 и использую ее в веб-приложении netcoreapp2.0 .

В моей библиотеке я только что создал промежуточное программное обеспечение, которое я вызываю в моем core2 приложении.

В моем netcoreapp2.0 я создал метод расширения в IApplicationBuilder для вызова промежуточного программного обеспечения.

public static IApplicationBuilder UseSeriLogLogicalProperties(this IApplicationBuilder applicationBuilder)
    {
        return applicationBuilder.UseMiddleware<LogicalPropertiesLoggingMiddleware>();
    }

Затем в моем примере projet (core) я просто вызываю этот метод расширения в своем файле startup.cs в разделе Configure ().

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
    {
        app.UseSeriLogLogicalProperties();
    }

Теперь я бы хотел назвать это промежуточное ПО в другом примере, на этот раз в net452 .

Как я мог это сделать?

1 Ответ

0 голосов
/ 10 апреля 2019

Я нашел решение.Вы можете использовать PreApplicationStartMethod в AssemblyInfo.cs вашего проекта, затем вы можете подписать BeginRequest.

Таким образом, для каждого запроса вашего приложения вы будете передавать метод, чтобы вы могли делать то, что вы хотите.

Сначала создайте класс, который будет вызываться для каждого запроса

public class YourModule : IHttpModule
{
    public void Init(HttpApplication application)
    {
        application.BeginRequest += Application_BeginRequest;
    }

    private void Application_BeginRequest(object source, EventArgs e)
    {
        var application = (HttpApplication)source;
        var context = application.Context;
        //your code
    }
}

Затем создайте другой класс, который будет вызываться в AssemblyInfo.cs, который будет вызывать класс выше

[EditorBrowsable(EditorBrowsableState.Never)]
public static class PreApplicationStartCode
{
    private static bool startWasCalled;

    public static void Start()
    {
        if (startWasCalled)
        {
            return;
        }

        startWasCalled = true;

        DynamicModuleUtility.RegisterModule(typeof(YourModule));
    }
}

Затем в AssemblyInfo.cs

[assembly: PreApplicationStartMethod(typeof(PreApplicationStartCode), "Start")]

Поэтому, когда вы будете вызывать действие из контроллера, вы будете каждый раз передавать метод YourModule.Application_BeginRequest (), как промежуточное ПО в основных приложениях.

Протестировано вNet452 WebApi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...