2014-11-29 3 views
4

Я использую пакет kpm для создания моего развертывания, который я развертываю в Azure через ftp. Мне нужно, чтобы иметь возможность обслуживать статические файлы JSon, так что мне нужно добавить следующие строки в моем web.config:Настройка web.config для развертывания ASP.NET 5 (vNext)

<system.webServer> 
    <staticContent> 
    <mimeMap fileExtension=".json" mimeType="text/html" /> 
    </staticContent> 
</system.webServer> 

Проблема заключается в том, что KPM пакет генерирует web.config, так что единственный способ для достижения этой цели заключается в том, чтобы добавить раздел конфигурации в файл web.config после его создания. Поскольку я выполняю автоматическое развертывание через ci, для этого потребуется немного усилий. Есть ли лучший способ сделать это?

+0

Вы говорите, ваш проект имеет файл 'web.config', а' kpm pack' перезаписывает его? Или это игнорируется? – Eilon

+0

У меня нет моего web.config. Я попытался поместить мой в wwwroot, и пакет kpm перезаписал его. –

+0

Получил. Я попросил одного из инженеров в команде ASP.NET взглянуть на это. – Eilon

ответ

2

Вы должны добавить свои конфигурации к источнику web.config, а не к цели.

Если у вас нет файла web.config в корневом каталоге проекта, пожалуйста, создайте его. Затем добавьте свои статические конфигурации контента в [project_root] /web.config.

«kpm pack» сохранит все конфигурации в [project_root] /web.config, добавит некоторую информацию, необходимую IIS, а затем напишет ее на wwwroot/web.config.

Важное обновление:

изменение было введено в "кгм пакет": https://github.com/aspnet/KRuntime/pull/972

Пожалуйста переместили web.config от корня проекта к источнику Wwwroot.

Источник папки wwwroot может быть указан с помощью «webroot» в project.json (https://github.com/aspnet/Home/wiki/Project.json-file#webroot). Вы также можете указать его с опцией '--wwwroot' для «kpm pack».

+0

Спасибо за обновление! Я думаю, что web.config в wwwroot гораздо более интуитивно понятен. –

+0

Это не работает для меня. Я на kpm версии '1.0.0-beta1-10662' - эта версия включает код для использования источника' web.config' в 'wwwroot'? Если версия слишком старая, как мне обновить 'kpm' до последней версии? –

+0

Попробуйте "kvm upgrade". Если у вас нет kvm, пожалуйста, установите его, следуя инструкциям в [aspnet/Home] (https://github.com/aspnet/Home). –

0

В ASP.NET Ядра вы можете быть в состоянии избежать web.config в целом путем настройки статических параметров файла промежуточного слоя (StaticFileOptions) в коде, обеспечивая пользовательские FileExtensionContentTypeProvider как его ContentTypeProvider:

public void ConfigureServices(IServiceCollection services) 
{ 
    ... 
    services.AddInstance<IContentTypeProvider>(
     new FileExtensionConentTypeProvider(
      new Dictionary<string, string>(
       // Start with the base mappings 
       new FileExtensionContentTypeProvider().Mappings, 
       // Extend the base dictionary with your custom mappings 
       StringComparer.OrdinalIgnoreCase) { 
        { ".json", "text/html" } 
       } 
      ) 
     ); 
    ... 
} 

public void Configure(
    IApplicationBuilder app, 
    IContentTypeProvider contentTypeProvider) 
{ 
    ... 
    app.UseStaticFiles(new StaticFileOptions() { 
     ContentTypeProvider = contentTypeProvider 
     ... 
    }); 
    ... 
} 
Смежные вопросы