2017-10-02 23 views
0

iis express上でasp.netコア2アプリケーション(Web API)をローカルで実行すると、静的リソースを呼び出すように動作しますが、 iis 8私は404にアクセスしようとする。 ここでは私の設定です。ローカルではwwwrootにリソースを入れていますが、startup.cs、program.csは1つ上位のディレクトリです。Asp.netコア2 - スタティックファイルはプロダクトでは動作しませんが、iis expressで動作します

を展開すると、コンパイルされた/公開されたすべてのDLLとリソースは、Webサイトのwwwrootに展開されます。今、私のAPIは、例えば、私は、そのようなことはすべきではなくindex.htmlをとcryptocal.dllの両方があるにもかかわらず、404をhttp://cryptocal.imetasoft.com/index.html返すよう

[HttpGet] 
[Route("api/misc/categories")] 
public IActionResult Categories() 
{ 
    return Ok(DbContext.Categories); 
} 

はそうhttp://cryptocal.imetasoft.com/api/misc/categories戻っカテゴリを呼び出すように定義されたルートになり、細かいonlie仕事します私のウェブサーバ(prod)のwwwrootにあります。

私はすべての設定が適切だと思います。 ノー変更(生成されたテンプレートからデフォルト)Microsoft.AspNetCoreを用い

のProgram.csMicrosoft.AspNetCore.StaticFiles v2.0

.csprojコンテンツ

<Project Sdk="Microsoft.NET.Sdk.Web"> 

    <PropertyGroup Label="Globals"> 
    <SccProjectName>SAK</SccProjectName> 
    <SccProvider>SAK</SccProvider> 
    <SccAuxPath>SAK</SccAuxPath> 
    <SccLocalPath>SAK</SccLocalPath> 
    </PropertyGroup> 

    <PropertyGroup> 
    <TargetFramework>netcoreapp2.0</TargetFramework> 
    </PropertyGroup> 

    <ItemGroup> 
    <Folder Include="wwwroot\" /> 
    </ItemGroup> 

    <ItemGroup> 
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" /> 
    <PackageReference Include="morelinq" Version="2.7.0" /> 
    </ItemGroup> 

    <ItemGroup> 
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" /> 
    </ItemGroup> 

</Project> 

にnugetパッケージを追加しません。 Microsoft.AspNetCore.Hostingを使用しています。

namespace CryptoCal 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      BuildWebHost(args).Run(); 
     } 

     public static IWebHost BuildWebHost(string[] args) => 
      WebHost.CreateDefaultBuilder(args) 
       .UseStartup<Startup>() 
       .Build(); 
    } 
} 

Startup.cs

using Microsoft.AspNetCore.Builder; 
using Microsoft.AspNetCore.Hosting; 
using Microsoft.Extensions.Configuration; 
using Microsoft.Extensions.DependencyInjection; 
using CryptoCal.Models; 
using Microsoft.EntityFrameworkCore; 
using CryptoCal.Support; 

namespace CryptoCal 
{ 
    public class Startup 
    { 
     public Startup(IConfiguration configuration) 
     { 
      Configuration = configuration; 
     } 

     public IConfiguration Configuration { get; } 

     // This method gets called by the runtime. Use this method to add services to the container. 
     public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddDbContext<CryptoDateContext>(options => options.UseSqlServer(Configuration.GetConnectionString("CryptoCalDatabase"))); 
      services.Configure<GeneralSettings>(Configuration.GetSection("GeneralSettings")); 
      services.AddMvc(); 
     } 

     // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
     public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
     { 
      if (env.IsDevelopment()) 
      { 
       app.UseDeveloperExceptionPage(); 
      } 
      app.UseDefaultFiles(); 
      app.UseStaticFiles(); 
      app.UseMvc(x => 
      { 

      }); 
     } 
    } 
} 
+0

すべての静的ファイルのあなたがそれを述べた方法を意味するのであれば。正しく展開されると、DLLはルートにあり、静的ファイルはサブフォルダwwwrootにあります。多分それがあなたが意味していたものですか? – k3davis

+0

ウェブサイトパネルにサイトを作成するときに、iisの物理パス用に置くルートがwwwrootに設定されています(これがそうする方法です)。実際に私のサイトの私の "ルート"はwwwrootというフォルダであり、その中にはコア用の別のwwwrootがあります。これが私の最初の中核的な展開であり、その前にすべて、dll、binなどがwwwrootに投げ込まれました。 – Zoinky

+0

私は "ウェブサイトパネル"が何であるか分かりません。それはあなたの質問に関連する編集かもしれません。 – k3davis

答えて

0

それは私の一部に見落とした、wwwrootの内容は、DLLのは、どこに行くよりも高くする必要があり、私はそれらを入れていた理由はわかりません最初は同じフォルダです。 @ k3davisは

が\に向いてIIS最初の場所で正しかった

\ DLLの \ wwwrootに私はDLLファイルと静的ファイルが同じフォルダ内にあることを期待していない

関連する問題