微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 IIS 中重新发布 .net core 5 Web 应用程序更改未生效

如何解决如何在 IIS 中重新发布 .net core 5 Web 应用程序更改未生效

我已将 .net core 5 web api 发布到 IIS(使用 VS 2019 webdeploy),并且运行良好。现在我做了一些小改动并重新发布。这些更改在我使用 iis express 的本地机器上生效,但是当我发布到我的 IIS 服务器时我看不到它们。我可以看到 exe 和 dll 已更新,但 webapi 行为确实发生了变化。像设置 swaggerdoc 标题这样简单的事情不会生效。

我还需要做些什么来刷新应用程序吗?我试过回收应用程序池并执行 iisreset,但没有运气。我读过 IIS 只是充当 kestral 的反向代理,而 kestral 实际上托管了 api。如果是这样,我该如何回收?

作为测试,我删除了 web api 目录中的所有文件。我浏览到 web api 并收到以下错误

HTTP 错误 500.31 - 无法加载 ASP.NET Core 运行时常见问题 此问题的解决方案:指定版本 未找到 Microsoft.NetCore.App 或 Microsoft.AspNetCore.App。 故障排除步骤:

检查系统事件日志以获取错误消息 启用记录应用程序进程的标准输出消息 调试器到应用程序进程并检查更多信息 访问:https://go.microsoft.com/fwlink/?LinkID=2028526

然后我重新发布 web api 并浏览它,但它仍然具有旧的行为。我真的很困惑,因为我知道为我的服务发布的 dll 是正确的。 如果我使用 ILSpy,我可以看到以下代码

public void ConfigureServices(IServiceCollection services)
{
    IConfigurationSection appSettingsSection = Configuration.GetSection("ApplicationSettings");

    ApplicationSettings appSettings = appSettingsSection.Get<ApplicationSettings>();
    services.AddSingleton(appSettingsSection.Get<ApplicationSettings>());


    services.AddControllers()
    .AddXmlSerializerFormatters()
    .AddJsonoptions(delegate(Jsonoptions o)
    {
        o.JsonSerializerOptions.PropertyNamingPolicy = null;
        o.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
    });

    services.AddSwaggerGen(delegate(SwaggerGenoptions c)
    {
        c.SwaggerDoc("v1",new OpenApiInfo
        {
            Title = "My Demo Service (" + appSettings.Environment + ")",Version = "v1"
        });
    });
}

当我在本地开发框中浏览到 API 的 swagger 页面时,标题代码匹配,并且属性命名正是我想要的。当我在服务器上浏览它时,swagger 页面标题是旧值,并且属性命名策略是驼峰式大小写,所以我很确定我正在发布我的 web api 的新版本,但它不是当我向 api 发出 http 请求时正在执行。某些东西必须缓存在某处。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。