コード例 #1
0
        internal static void UseStaticWebAssetsCore(IWebHostEnvironment environment, Stream manifest, bool isJson)
        {
            if (isJson)
            {
                var staticWebAssetManifest = ManifestStaticWebAssetFileProvider.StaticWebAssetManifest.Parse(manifest);
                var provider = new ManifestStaticWebAssetFileProvider(
                    staticWebAssetManifest,
                    (contentRoot) => new PhysicalFileProvider(contentRoot));

                environment.WebRootFileProvider = new CompositeFileProvider(new[] { environment.WebRootFileProvider, provider });
                return;
            }

            var webRootFileProvider = environment.WebRootFileProvider;

            var additionalFiles = StaticWebAssetsReader.Parse(manifest)
                                  .Select(cr => new StaticWebAssetsFileProvider(cr.BasePath, cr.Path))
                                  .OfType <IFileProvider>() // Upcast so we can insert on the resulting list.
                                  .ToList();

            if (additionalFiles.Count == 0)
            {
                return;
            }
            else
            {
                additionalFiles.Insert(0, webRootFileProvider);
                environment.WebRootFileProvider = new CompositeFileProvider(additionalFiles);
            }
        }
コード例 #2
0
        public void ParseManifest_ThrowsFor_UnknownVersion()
        {
            // Arrange
            var manifestContent = @"<StaticWebAssets Version=""2.0""/>";
            var manifest        = CreateManifest(manifestContent);

            // Act & Assert
            var exception = Assert.Throws <InvalidOperationException>(() => StaticWebAssetsReader.Parse(manifest).ToArray());

            Assert.StartsWith("Unknown manifest version", exception.Message);
        }
コード例 #3
0
        public void ParseManifest_ThrowsFor_UnknownRootElement()
        {
            // Arrange
            var manifestContent = @"<Invalid />";
            var manifest        = CreateManifest(manifestContent);

            // Act & Assert
            var exception = Assert.Throws <InvalidOperationException>(() => StaticWebAssetsReader.Parse(manifest).ToArray());

            Assert.StartsWith("Invalid manifest", exception.Message);
        }
コード例 #4
0
        public void ParseManifest_ThrowsFor_EmptyManifest()
        {
            // Arrange
            var manifestContent = @"";
            var manifest        = CreateManifest(manifestContent);

            // Act & Assert
            var exception = Assert.Throws <XmlException>(() => StaticWebAssetsReader.Parse(manifest).ToArray());

            Assert.StartsWith("Root element is missing.", exception.Message);
        }
コード例 #5
0
        public void ParseManifest_ThrowsFor_InvalidStaticWebAssetsChildren()
        {
            // Arrange
            var manifestContent = @"<StaticWebAssets Version=""1.0"">
    <Invalid />
</StaticWebAssets>";
            var manifest        = CreateManifest(manifestContent);

            // Act & Assert
            var exception = Assert.Throws <InvalidOperationException>(() => StaticWebAssetsReader.Parse(manifest).ToArray());

            Assert.StartsWith("Invalid manifest", exception.Message);
        }
コード例 #6
0
        public void ParseManifest_ParsesManifest_WithSingleItem()
        {
            // Arrange
            var manifestContent = @"<StaticWebAssets Version=""1.0"">
    <ContentRoot Path=""/Path"" BasePath=""/BasePath"" />
</StaticWebAssets>";

            var manifest = CreateManifest(manifestContent);

            // Act
            var mappings = StaticWebAssetsReader.Parse(manifest).ToArray();

            // Assert
            var mapping = Assert.Single(mappings);

            Assert.Equal("/Path", mapping.Path);
            Assert.Equal("/BasePath", mapping.BasePath);
        }
コード例 #7
0
        internal static void UseStaticWebAssetsCore(IWebHostEnvironment environment, Stream manifest)
        {
            var webRootFileProvider = environment.WebRootFileProvider;

            var additionalFiles = StaticWebAssetsReader.Parse(manifest)
                                  .Select(cr => new StaticWebAssetsFileProvider(cr.BasePath, cr.Path))
                                  .OfType <IFileProvider>() // Upcast so we can insert on the resulting list.
                                  .ToList();

            if (additionalFiles.Count == 0)
            {
                return;
            }
            else
            {
                additionalFiles.Insert(0, webRootFileProvider);
                environment.WebRootFileProvider = new CompositeFileProvider(additionalFiles);
            }
        }