私は簡単なconsoleApp(netcoreapp2.0)を書いています
<Project Sdk="Microsoft.NET.Sdk">
そして、MVCでWebサーバーを実行したい。
class Program
{
static void Main(string[] args)
{
WebHost.CreateDefaultBuilder()
.ConfigureServices(services => services.AddMvc())
.Configure(app => app.UseDeveloperExceptionPage().UseMvcWithDefaultRoute())
.UseHttpSys().Build().Run();
}
}
public class HomeController : Controller
{
[HttpGet] public ActionResult Index() => View("Index");
}
GET http // localhost:5000中にエラーが発生します
1つ以上のコンパイル参照が欠落しています。プロジェクトが「Microsoft.NET.Sdk.Web」を参照しており、「PreserveCompilationContext」プロパティがfalseに設定されていないことを確認してください。
おそらく理由はRazorEngineにあります。どうすればそれを機能させることができますか?私は何を取りこぼしたか?
このエラーメッセージは、@using
ビューファイルにIndex.cshtml
がないことが原因である可能性があります。インデックスビューをバイパスして、このようにコントローラから文字列を返すだけで、エラーメッセージが消えるかどうかを確認できます。
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
WebHost.CreateDefaultBuilder()
.ConfigureServices(services => services.AddMvc())
.Configure(app => app.UseDeveloperExceptionPage().UseMvcWithDefaultRoute())
.UseHttpSys().Build().Run();
}
}
public class HomeController : Controller
{
[HttpGet] public string Index() => "Hello World!";
}
}
csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Server.HttpSys" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.0.0" />
</ItemGroup>
</Project>
ビューがもう存在しないモデルを参照しているときに私に起こりました。私の場合、それは確認ページだったので、私が扱っていた「大きな」ビューではありませんでした。 VSで多くのビューを開くと、エラーが明らかになる可能性があります。