OwinStartup 停止使用 IIS 启动(但仍在使用 IIS Express)

OwinStartup stop firing with IIS ( but still working with IIS Express )

我有一个 Web API 2 应用程序,托管在 IIS 上。

要配置 OWIN,它有一个与此类似的启动 class:

[assembly: OwinStartup(typeof(Startup))]
namespace Application.Api
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
            throw new Exception("Owin startup class fired"); // Added for test pourposes
        }
    }
}

该应用程序一直运行得很好,直到它停止触发 Startup class:配置文件没有任何变化,没有包更新,文件 Microsoft.Owin.Host.SystemWeb.dll存在于bin文件夹中,配置没问题等

只有它停止工作,但如果我将项目设置为 Startup Project 和 运行 它 F5 使用 IIS Express 启动 class 已正确加载。

我检查了其他有可能原因的帖子,但运气不佳:

等等

ASPTEMP 文件IIS 似乎有问题].

因此,为了修复它,我执行了以下步骤:

  1. Visual Studio, Build => Clean Solution.
  2. 关闭Visual Studio.
  3. 从项目 bin 文件夹中删除所有文件。
  4. 从项目 obj 文件夹中删除所有文件。
  5. 删除 ASP.Net 临时文件:在我的安装中,它们位于: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root 并进入: C:\Users\[Your User]\AppData\Local\Temp\Temporary ASP.NET Files\
  6. 删除 IIS 临时文件。您可以找到打开 IIS 管理器并选择 .NET Compilation 的位置: 进入 Assemblies 组,您将看到设置 Temporary DirectoryG:\TEMP 在我的安装中)
  7. IIS 中删除 你的 API 项目站点,然后 重新添加它.
  8. 输入Visual Studio,构建 => 重建解决方案
  9. 测试一下。

我希望这对某人有所帮助;我在这个讨厌的问题上花了很多时间。

我遇到了同样的问题,搜索并尝试了很多东西。结果我不得不 "Enable 32-bit Applications" 在我的 IIS 上的应用程序正在使用的应用程序池中。 方法如下:

在您将 OWIN 应用程序部署到的服务器上...

  1. 打开 IIS

  2. 转到应用程序池

  3. 右键单击您的 OWIN 应用程序正在使用的应用程序池,然后单击 "advanced settings"(如果您不知道您的 OWIN 应用程序正在使用哪个应用程序池,请右键单击您的应用程序 - > "manage website" -> "advanced settings" -> "Application Pool" 是列表中的第一项)

  4. 将 "Enable 32-bit Applications" 设置为真

  5. 重新启动应用程序,如果那是问题所在,您的应用程序现在应该可以运行了。