ServiceStack Nuxt.js SPA 和 ImageSharp.Web 集成
ServiceStack Nuxt.js SPA and ImageSharp.Web integration
我正在将我的项目从 Asp.Net MVC 迁移到 ServiceStack Nuxt.js SPA,我在 MVC 上使用的一件事是 ImageProcessor.Web 动态处理图像
我现在正尝试在 ServiceStack Nuxt.js 模板上使用 ImageSharp.Web 和 Azure blob。
我在 ConfigureServices 中注册了服务
services.AddImageSharp()
.SetRequestParser<QueryCollectionRequestParser>()
.Configure<AzureBlobStorageImageProviderOptions>(options =>
{
// The "BlobContainers" collection allows registration of multiple containers.
options.BlobContainers.Add(new AzureBlobContainerClientOptions
{
ConnectionString = "DefaultEndpointsProtocol=https;AccountName=storage1;AccountKey=*****;EndpointSuffix=core.windows.net",
ContainerName = "blob"
});
})
.SetCache<PhysicalFileSystemCache>()
.SetCacheHash<CacheHash>()
.AddProvider<AzureBlobStorageImageProvider>()
.AddProcessor<ResizeWebProcessor>()
.AddProcessor<FormatWebProcessor>()
.AddProcessor<BackgroundColorWebProcessor>();
并且也在配置中
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseServiceStack(new AppHost
{
AppSettings = new NetCoreAppSettings(Configuration)
});
app.UseImageSharp();
但是我无法获取图像
http://localhost:3000/blob/media/picture.jpg
如何启用 ImageSharp.Web 在这种情况下拦截对 /blob 路由的调用?
是否也可以使用 Azure blob 进行缓存,这样就不会在本地存储任何文件?
提前致谢
在 ServiceStack 的 vue-nuxt 模板中,nuxt Webpack 开发服务器在 http://localhost:3000 上运行,代理 API 对 ASP.NET 核心服务器的请求在 https:/ 上运行/localhost:5001.
因此,要确保您的 /blob
路由是否正常工作,首先检查它是否可以从您的 ASP.NET 核心服务器访问,例如:
https://localhost:5001/blob/media/picture.jpg
如果是,您需要在 nuxt.config.js 中注册一个额外的开发代理路由,以将所有 /blob/*
请求转发到您的 ASP.NET 核心服务器,例如:
proxy: {
'/json': {
target: 'https://localhost:5001/',
secure: false
},
'/auth': {
target: 'https://localhost:5001/',
secure: false
},
'/metadata': {
target: 'https://localhost:5001/',
secure: false
},
'/css': {
target: 'https://localhost:5001/',
secure: false
},
'/blob': {
target: 'https://localhost:5001/',
secure: false
},
},
如果您的 https://localhost:5001/blob/*
API 请求未由 ImageSharp 提供服务,那么您需要在 ServiceStack 之前注册它的中间件处理程序以获得更高的优先级,例如:
app.UseImageSharp();
app.UseServiceStack(new AppHost
{
AppSettings = new NetCoreAppSettings(Configuration)
});
我正在将我的项目从 Asp.Net MVC 迁移到 ServiceStack Nuxt.js SPA,我在 MVC 上使用的一件事是 ImageProcessor.Web 动态处理图像
我现在正尝试在 ServiceStack Nuxt.js 模板上使用 ImageSharp.Web 和 Azure blob。
我在 ConfigureServices 中注册了服务
services.AddImageSharp()
.SetRequestParser<QueryCollectionRequestParser>()
.Configure<AzureBlobStorageImageProviderOptions>(options =>
{
// The "BlobContainers" collection allows registration of multiple containers.
options.BlobContainers.Add(new AzureBlobContainerClientOptions
{
ConnectionString = "DefaultEndpointsProtocol=https;AccountName=storage1;AccountKey=*****;EndpointSuffix=core.windows.net",
ContainerName = "blob"
});
})
.SetCache<PhysicalFileSystemCache>()
.SetCacheHash<CacheHash>()
.AddProvider<AzureBlobStorageImageProvider>()
.AddProcessor<ResizeWebProcessor>()
.AddProcessor<FormatWebProcessor>()
.AddProcessor<BackgroundColorWebProcessor>();
并且也在配置中
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseServiceStack(new AppHost
{
AppSettings = new NetCoreAppSettings(Configuration)
});
app.UseImageSharp();
但是我无法获取图像
http://localhost:3000/blob/media/picture.jpg
如何启用 ImageSharp.Web 在这种情况下拦截对 /blob 路由的调用?
是否也可以使用 Azure blob 进行缓存,这样就不会在本地存储任何文件?
提前致谢
在 ServiceStack 的 vue-nuxt 模板中,nuxt Webpack 开发服务器在 http://localhost:3000 上运行,代理 API 对 ASP.NET 核心服务器的请求在 https:/ 上运行/localhost:5001.
因此,要确保您的 /blob
路由是否正常工作,首先检查它是否可以从您的 ASP.NET 核心服务器访问,例如:
https://localhost:5001/blob/media/picture.jpg
如果是,您需要在 nuxt.config.js 中注册一个额外的开发代理路由,以将所有 /blob/*
请求转发到您的 ASP.NET 核心服务器,例如:
proxy: {
'/json': {
target: 'https://localhost:5001/',
secure: false
},
'/auth': {
target: 'https://localhost:5001/',
secure: false
},
'/metadata': {
target: 'https://localhost:5001/',
secure: false
},
'/css': {
target: 'https://localhost:5001/',
secure: false
},
'/blob': {
target: 'https://localhost:5001/',
secure: false
},
},
如果您的 https://localhost:5001/blob/*
API 请求未由 ImageSharp 提供服务,那么您需要在 ServiceStack 之前注册它的中间件处理程序以获得更高的优先级,例如:
app.UseImageSharp();
app.UseServiceStack(new AppHost
{
AppSettings = new NetCoreAppSettings(Configuration)
});