Как сделать так, чтобы URL переписывался на движке облачных приложений Google? - PullRequest
0 голосов
/ 05 сентября 2018

Я развернул свое клиентское приложение реагирования и API-интерфейс dot net core в Google Cloud App Engine с той же службой и той же версией. Я впервые работаю с App Engine. Обычно при развертывании в IIS у меня будет веб-конфигурация для перезаписи URL-адреса с использованием реагирующей маршрутизации, но кажется, что перезапись URL-адреса не работает с App Engine. Есть ли альтернатива, что я могу достичь тех же результатов с IIS?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Если вы используете ASP.NET Core, может быть, вы можете попробовать этот подход?

Добавить этот класс:

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
using Microsoft.AspNetCore.Rewrite;
using System;

namespace APA.Web.Common
{
    public class RedirectToWwwRule : IRule
    {
        public virtual void ApplyRule(RewriteContext context)
        {
            var req = context.HttpContext.Request;
            if (req.Host.Host.Equals("localhost", StringComparison.OrdinalIgnoreCase))
            {
                context.Result = RuleResult.ContinueRules;
                return;
            }

            if (req.Host.Value.StartsWith("www.", StringComparison.OrdinalIgnoreCase))
            {
                context.Result = RuleResult.ContinueRules;
                return;
            }

            var wwwHost = new HostString($"www.{req.Host.Value}");
            var newUrl = UriHelper.BuildAbsolute(req.Scheme, wwwHost, req.PathBase, req.Path, req.QueryString);
            var response = context.HttpContext.Response;
            response.StatusCode = 301;
            response.Headers[Microsoft.Net.Http.Headers.HeaderNames.Location] = newUrl;
            context.Result = RuleResult.EndResponse;
        }
    }
}

, а затем используйте его в Configure Method в Startup.cs.

Добавьте этот код, чтобы использовать его:

using Microsoft.AspNetCore.Rewrite;   



public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
      ...
      ...

    var options = new RewriteOptions();
    options.AddRedirectToHttps();
    options.Rules.Add(new RedirectToWwwRule());
    app.UseRewriter(options);
...

Я использую этот код для перенаправления всего не-www / HTTP-трафика в версию www / HTTPS.

0 голосов
/ 05 сентября 2018

Добро пожаловать в App Engine. Google Cloud App Engine Flex не запускает IIS, поэтому он не читает содержимое файла web.config.

Я нашел эту статью о переписывании промежуточного программного обеспечения для ядра ASP.NET: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/url-rewriting?view=aspnetcore-2.1&tabs=aspnetcore2x Я считаю, что это промежуточное ПО позволит вам переписывать URL-адреса по мере необходимости, но я не знаю наверняка без вашего web.config.

Приложение, которое использует перезаписывающее промежуточное ПО вместо web.config, будет работать одинаково в IIS и App Engine.

...