C# IIS 10上的ASP.NET Core 404错误
我在IIS 10上运行ASP.NET核心web应用程序时遇到问题。 我正在用AngularJS开发一个单页应用程序 index.html加载完美,但后端请求失败,IIS 10上出现404错误代码。从VisualStudio和IIS Express中,它可以完美地工作 有人知道我如何修复后端请求吗 这是我的程序C# IIS 10上的ASP.NET Core 404错误,c#,asp.net,iis,asp.net-core,asp.net-core-1.0,C#,Asp.net,Iis,Asp.net Core,Asp.net Core 1.0,我在IIS 10上运行ASP.NET核心web应用程序时遇到问题。 我正在用AngularJS开发一个单页应用程序 index.html加载完美,但后端请求失败,IIS 10上出现404错误代码。从VisualStudio和IIS Express中,它可以完美地工作 有人知道我如何修复后端请求吗 这是我的程序 public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestr
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
你的代码在我的机器上和Kestrel一起工作。一个很好的故障排除步骤是找出问题出在ASP.NET核心应用程序还是IIS主机配置上 从项目的根目录尝试此操作
dotnet restore
dotnet run
您将看到如下内容:
Hosting environment: Production
Content root path: C:\MyApplicationPath
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
在浏览器中,转到以下两个URL。如果它们不起作用,那么您的应用程序就出了问题。如果它们确实起作用,则表明您的IIS主机有问题
localhost:5000 // you will see your index.html page
localhost:5000/api // you will see your default routes output
在我的例子中,问题是我的控制器抛出了一个异常,因此框架试图使用没有可用的异常处理程序页面,因此404错误,控制器本身抛出了500个错误,以利于搜索者 我在使用IIS时得到了404。我遵循了正确的发布()和部署过程 我花了一段时间才弄明白,但最终我在一本书中找到了答案 基本上,当创建应用程序池并将其设置为“无托管代码”时,我还需要进入高级设置并将应用程序池标识设置为“网络服务”。在我的机器上使用ApplicationPoolIdentity可以,但在我部署到的机器上则不行 因此,为了清楚起见,我的全部程序是: 要创建包,请执行以下操作:
iisreset
的身份打开命令提示符。您应该只在安装dotnet core运行时后的第一次使用它另一个非常愚蠢但可能的变体是,由于错误的部署设置,应用程序部署在与您期望的文件夹不同的文件夹中(例如:您的服务器根目录而不是子文件夹)。现在也有同样的问题,这让我来到了本页。如果现在有人有这个问题,这就是我解决这个问题的原因:
如果使用api调用,请确保类具有: [路由(“api/[控制器]”)] [ApiController] 在上面,类被实例化 还要确保您有: [HttpGet()]
例如,上面是您试图调试的api方法。对我来说,问题是一个名为UrlScan的ISAPI过滤器。我不得不将其从应用程序中删除,然后它才起作用。启用ASP.NET核心日志记录(可能是调试日志级别),并查看是否有任何消息说明此操作失败的原因发布您的web.config。您是否配置了MVC服务?是否添加了带有索引操作的主控制器?谢谢,我可以修复它。问题出在我的应用程序上,但如果应用程序出了问题,抛出404错误有点奇怪。应用程序出了什么问题?您的修复涉及什么?问题是缺少配置文件。我有3个环境appsettings文件,用于开发、暂存和生产,并带有必要的连接字符串。默认发布选项仅包含appsettings.json。因此,我需要将值更改为appsettings*.json以复制所有环境设置。根据MSDN文档,当运行时是自包含的时,您不需要安装它:@Aage-这是一个很好的观点-您不需要它来自包含。当然,您仍然需要.NET Core IIS托管捆绑包。您是如何解决问题的?是的,我也很想知道。在开发模式下,异常应该显示在页面上,但它不是。不确定是否存在导致404的异常我认为路由因某种原因中断,如果包含完整路径,我可以到达paga,。。。这将起作用->。。。。这将不起作用->这也不适用于在控制器中检查此答案添加try catch语句
localhost:5000 // you will see your index.html page
localhost:5000/api // you will see your default routes output