diff --git a/samples/GroupDocs.Editor.UI.RestFulApi/Program.cs b/samples/GroupDocs.Editor.UI.RestFulApi/Program.cs index a0d16c5..c70b8fc 100644 --- a/samples/GroupDocs.Editor.UI.RestFulApi/Program.cs +++ b/samples/GroupDocs.Editor.UI.RestFulApi/Program.cs @@ -5,10 +5,10 @@ var builder = WebApplication.CreateBuilder(args); // Add services to the container. -builder.Services.AddEditorLicense(builder.Configuration); +builder.Services.AddEditorLicense(builder.Configuration); builder.Services.AddEditorControllers(); builder.Services.AddEditorSwagger(); -builder.Services.AddEditor(builder.Configuration); +builder.Services.AddEditor(builder.Configuration); builder.Services.AddCors(p => p.AddPolicy("corsApp", policy => { policy.WithOrigins("*").AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin(); diff --git a/samples/GroupDocs.Editor.UI.WordProcessing.SpaSample/appsettings.Development.json b/samples/GroupDocs.Editor.UI.WordProcessing.SpaSample/appsettings.Development.json index dd67a34..23befc3 100644 --- a/samples/GroupDocs.Editor.UI.WordProcessing.SpaSample/appsettings.Development.json +++ b/samples/GroupDocs.Editor.UI.WordProcessing.SpaSample/appsettings.Development.json @@ -1,7 +1,7 @@ { "LocalStorageOptions": { "RootFolder": "file2", - "BaseUrl": "https://localhost:7246/file/" + "BaseUrl": "/file/" }, "AWS": { "Profile": "s3-demo", diff --git a/src/GroupDocs.Editor.UI.Api/Controllers/RequestModels/WordProcessing/WordToPdfDownloadRequest.cs b/src/GroupDocs.Editor.UI.Api/Controllers/RequestModels/WordProcessing/WordToPdfDownloadRequest.cs index 9083215..7e78eb1 100644 --- a/src/GroupDocs.Editor.UI.Api/Controllers/RequestModels/WordProcessing/WordToPdfDownloadRequest.cs +++ b/src/GroupDocs.Editor.UI.Api/Controllers/RequestModels/WordProcessing/WordToPdfDownloadRequest.cs @@ -1,5 +1,4 @@ using GroupDocs.Editor.Options; -using Microsoft.AspNetCore.Mvc; using System.ComponentModel.DataAnnotations; namespace GroupDocs.Editor.UI.Api.Controllers.RequestModels.WordProcessing; @@ -13,7 +12,7 @@ public class WordProcessingToPdfDownloadRequest /// The document code. /// [Required] - [FromQuery] public Guid DocumentCode { get; set; } + public Guid DocumentCode { get; set; } /// /// Gets or sets the save options. diff --git a/src/GroupDocs.Editor.UI.Api/GroupDocs.Editor.UI.Api.csproj b/src/GroupDocs.Editor.UI.Api/GroupDocs.Editor.UI.Api.csproj index 7c8191d..08dfb4b 100644 --- a/src/GroupDocs.Editor.UI.Api/GroupDocs.Editor.UI.Api.csproj +++ b/src/GroupDocs.Editor.UI.Api/GroupDocs.Editor.UI.Api.csproj @@ -5,7 +5,7 @@ enable enable GroupDocs.Editor.UI.Api - 8.0.3 + 8.0.5 GroupDocs.Editor.UI.Api containing base API features required by GroupDocs.Editor.UI see https://github.com/groupdocs-editor/GroupDocs.Editor-for-.NET-UI for more details. GroupDocs;Editor;UI;API;ASP.NET Core; GroupDocs @@ -22,11 +22,11 @@ - - - - - + + + + + diff --git a/src/GroupDocs.Editor.UI.Api/Services/Implementation/LocalStorage.cs b/src/GroupDocs.Editor.UI.Api/Services/Implementation/LocalStorage.cs index 68b51fc..3de3d66 100644 --- a/src/GroupDocs.Editor.UI.Api/Services/Implementation/LocalStorage.cs +++ b/src/GroupDocs.Editor.UI.Api/Services/Implementation/LocalStorage.cs @@ -46,12 +46,12 @@ public async Task>> SaveFile(IEnumerabl await using FileStream fileStream = File.Open(Path.Combine(folder, fileContent.FileName), FileMode.OpenOrCreate); fileContent.ResourceStream.Seek(0, SeekOrigin.Begin); await fileContent.ResourceStream.CopyToAsync(fileStream); - UriBuilder uriBuilder = GetFullUri(); - uriBuilder.Path += prefixPath.AppendKey(HttpUtility.UrlEncode(fileContent.FileName)).ToUriPath(); + string uriBuilder = GetProtocolRelativeUrl(); + uriBuilder += prefixPath.AppendKey(HttpUtility.UrlEncode(fileContent.FileName)).ToUriPath(); result.Add(StorageResponse.CreateSuccess(new StorageFile { DocumentCode = prefixPath.DocumentCode, - FileLink = uriBuilder.Uri.ToString(), + FileLink = uriBuilder, FileName = fileContent.FileName, ResourceType = fileContent.ResourceType })); @@ -104,21 +104,21 @@ public async Task> GetFileText(PathBuilder path) return StorageResponse.CreateSuccess(fileText); } - private UriBuilder GetFullUri() + private string GetProtocolRelativeUrl() { HttpRequest? request = _httpContextAccessor.HttpContext?.Request; if (request == null) throw new InvalidOperationException("No active HTTP request."); - UriBuilder uriBuilder = new UriBuilder - { - Scheme = request.Scheme, - Host = request.Host.Host, - Port = request.Host.Port ?? (request.Scheme == "https" ? 443 : 80), - Path = _options.BaseUrl - }; + string host = request.Host.Host; + int? port = request.Host.Port; + + // Include port only if it's non-standard (i.e., not 80 or 443) + string portPart = port.HasValue && port != 80 && port != 443 ? $":{port}" : ""; + + string path = _options.BaseUrl.TrimStart('/') ?? ""; - return uriBuilder; + return $"//{host}{portPart}/{path}"; } } \ No newline at end of file