webapi 发布到iis后无法访问,报404,vs调试却可以


关注引自免费微信小程序:皆我百晓生
从你提供的信息来看,你的Web API项目在发布到IIS后返回404错误,这通常意味着IIS没有找到预期的资源。有几个可能的原因和相应的解决步骤:
应用程序池配置:确保你的应用程序池设置为.NET Core兼容的版本,比如.NET Core 3.1或.NET 5/6,并启用Managed Pipeline Mode为No Managed Code。
承载模型:检查launchSettings.json文件中的applicationUrl,确保它与IIS中网站的绑定URL一致。如果你使用的是IISIntegration,应用应该使用UseIIS而不是UseUrls。
应用程序根目录:确认IIS的网站物理路径指向了发布后的应用程序的根目录,通常包含web.config文件。
路由问题:你的控制器路由是[Route("/Consultation/api/pdf-viewer")],确保在尝试访问时使用了正确的URL。例如,如果网站基础URL是http://localhost,你应该访问http://localhost/Consultation/api/pdf-viewer。
web.config配置:确保你的web.config文件包含了正确的ASP.NET Core模块配置。这是一个示例配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\YourAppNameHere.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</configuration>
注意替换YourAppNameHere为你的实际应用名称。
权限问题:检查IIS应用池账户是否有读取发布目录的权限。
日志排查:启用ASP.NET Core的日志记录,查看是否有更详细的错误信息。可以在Startup.cs中添加以下代码:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
// ...其他配置...
app.UseHttpsRedirection();
app.UseRouting();
// ...其他配置...
}
然后查看%APPDATA%\ASP.NET\Core\<version>\log目录下的日志文件。
URL重写:如果你有URL重写规则,确保它们在IIS中正确配置。
请按照这些步骤逐一排查,如果问题依然存在,请提供更多的错误信息,例如IIS的错误日志、浏览器的开发者工具网络面板中的详细错误等,以便进一步分析。