Найти текущий заявитель URl - PullRequest
0 голосов
/ 29 января 2019

Я запросил URL-адрес:

  public Uri GetAbsoluteUri()
    {
        var request = _httpContextAccessor.HttpContext.Request;
        UriBuilder uriBuilder = new UriBuilder();
        uriBuilder.Scheme = request.Scheme;
        uriBuilder.Host = request.Host.Host;
        uriBuilder.Path = request.Path.ToString();
        uriBuilder.Query = request.QueryString.ToString();
        return uriBuilder.Uri;
    }

    public string RootPath => Path.Combine(WebRootPath, RootFolderName);

    public string GetProductPicturePath()
    {
        return Path.Combine(GetAbsoluteUri().ToString(), RootFolderName, ProductPictureFolder);
    }

    public string GetProductMainPicturePath()
    {
        string path = Path.Combine(GetAbsoluteUri().ToString(), RootFolderName, ProductPictureFolder, ProductMainPictureFolder);
        return path;
    }

    public string GetNewPath()
    {
        string productMainPicturePath = GetProductMainPicturePath();
        return Path.Combine(productMainPicturePath);
    }

наконец я использую GetNewPath().

, но это даст мне адрес:

https://localhost/api/Product/GetProductList/Upload/ProductPictureFolder/ProductMainPicture/77777.png

но у меня есть 2 проблемы с этим URL:

1 -он не содержит порт в URL https://localhost/api, но мне нужно вернуть вот так: http://localhost:4200/api

2 - сюда входят имя контроллера и ActionName, но мне нужно вот так: https://localhost/Upload/ProductPictureFolder/ProductMainPicture/77777.png

но мне возвращают это: https://localhost/api/Product/GetProductList/Upload/ProductPictureFolder/ProductMainPicture/77777.png

мне это не нужно /api/Product/GetProductList.

Product : Имя контроллера

GetProductList : ActionName

Как я могу решить эту проблему ???

1 Ответ

0 голосов
/ 29 января 2019

1 - он не содержит порт в URL https://localhost/api, но мне нужно вернуть вот так

Чтобы получить порт, вы можете использовать этот фрагмент:

if (request.Host.Port.HasValue) 
   uriBuilder.Port = request.Host.Port.Value;

2 - сюда входят имя контроллера и ActionName, но мне нужно вот что: https://localhost/Upload/ProductPictureFolder/ProductMainPicture/77777.png

Я предлагаю вам установить UriBuilder Path в соответствии с вашими потребностями,не из запроса.Как то так:

// Make your Upload file path here
var relativePath = Path.Combine(folderName, filename);

var request = _httpContextAccessor.HttpContext.Request;
var uriBuilder = new UriBuilder
{
    Host = request.Host.Host,
    Scheme = request.Scheme,
    Path = relativePath
};

if (request.Host.Port.HasValue) 
    uriBuilder.Port = request.Host.Port.Value;

var imageUrl = uriBuilder.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...