重命名 ASP.NET 项目文件后,无法在 IIS Express 中将 OWIN 启动 class 更改为 运行
Can't get the OWIN Startup class to run in IIS Express after renaming ASP.NET project file
我遇到了一种情况,我需要在基于 OWIN 的 WebAPI 网站中更改解决方案和项目名称。在此更改之前一切正常,据我所知重命名成功的原因如下:
- 解决方案构建良好,我的所有单元测试 运行 在本地和我们的 TeamCity 构建服务器上都成功
- 应用程序 运行 在我们的测试服务器(完整的 IIS 8)和生产环境(也是完整的 IIS 8)上运行良好
我的问题是,在重命名之后,当我在 IIS Express 中 运行 执行此操作时,无论我尝试什么,我都无法执行 Startup class。我怀疑我的机器上有一些包含多个 Startup class 的缓存文件夹,因为在我们的测试环境中,我需要在开始工作之前删除所有使用以前名称的旧 DLL。
我知道 Startup 没有执行,因为我在其中有没有触发的断点(实际上没有启用,因为 VS 没有看到加载的符号):
这是我迄今为止尝试过的方法:
- 卸载 IIS Express 10.0(我的开发机器上有 VS 2015 RC),清除所有 IIS 文件夹,然后重新安装 IIS Express 8
- 清除了我开发机器上的所有临时 ASP.NET 文件夹
- 清除了我自己的解决方案中的所有 obj/bin 个文件夹
在我的例子中,我在 Startup.cs 中使用以下内容指定启动 class:
[assembly: OwinStartup(typeof(Startup))]
...但是,在我尝试重命名解决方案和项目之前,这一切都运行良好。我不认为这是一般的 IIS Express 问题,因为我可以在本地成功 运行 其他基于 OWIN 的解决方案(例如,我们对 IdentityServer3 的实现)而不会出现问题......尽管该解决方案没有'不需要任何名称更改。
使用 IIS Express 时是否有其他方面可能因更改解决方案或项目文件的名称而出错?
作为参考,我已经检查了以下可能的原因(没有任何运气):
- OwinStartup not Starting ... Why?
- OWIN Startup Class Missing
- ASP.NET Temporary files cleanup
- OwinStartup not firing
虽然我无法完全解释 为什么 这可以解决问题,但我可以通过将项目更改为构建到常规 bin/
文件夹来解决此问题。
我很抱歉没有在我原来的问题中提到这一点,因为我认为它不相关,但我之前已经将我的 ASP.NET 项目更改为构建到 bin\Debug
和 bin\Release
取决于配置。这似乎工作得很好,但在我更改项目名称后导致了这个问题。
我知道这是旧的,但只是想补充一点,我 运行 使用自定义模板来解决这个问题。就我而言,我有一个创业公司的工作解决方案,将其设为模板,但该模板不起作用。
一探究竟,是因为新项目的名字里有个space。所以添加
[assembly: OwinStartup(typeof(myProjectName.Startup))]
我现有的启动文件修复了它。
我遇到了一种情况,我需要在基于 OWIN 的 WebAPI 网站中更改解决方案和项目名称。在此更改之前一切正常,据我所知重命名成功的原因如下:
- 解决方案构建良好,我的所有单元测试 运行 在本地和我们的 TeamCity 构建服务器上都成功
- 应用程序 运行 在我们的测试服务器(完整的 IIS 8)和生产环境(也是完整的 IIS 8)上运行良好
我的问题是,在重命名之后,当我在 IIS Express 中 运行 执行此操作时,无论我尝试什么,我都无法执行 Startup class。我怀疑我的机器上有一些包含多个 Startup class 的缓存文件夹,因为在我们的测试环境中,我需要在开始工作之前删除所有使用以前名称的旧 DLL。
我知道 Startup 没有执行,因为我在其中有没有触发的断点(实际上没有启用,因为 VS 没有看到加载的符号):
这是我迄今为止尝试过的方法:
- 卸载 IIS Express 10.0(我的开发机器上有 VS 2015 RC),清除所有 IIS 文件夹,然后重新安装 IIS Express 8
- 清除了我开发机器上的所有临时 ASP.NET 文件夹
- 清除了我自己的解决方案中的所有 obj/bin 个文件夹
在我的例子中,我在 Startup.cs 中使用以下内容指定启动 class:
[assembly: OwinStartup(typeof(Startup))]
...但是,在我尝试重命名解决方案和项目之前,这一切都运行良好。我不认为这是一般的 IIS Express 问题,因为我可以在本地成功 运行 其他基于 OWIN 的解决方案(例如,我们对 IdentityServer3 的实现)而不会出现问题......尽管该解决方案没有'不需要任何名称更改。
使用 IIS Express 时是否有其他方面可能因更改解决方案或项目文件的名称而出错?
作为参考,我已经检查了以下可能的原因(没有任何运气): - OwinStartup not Starting ... Why? - OWIN Startup Class Missing - ASP.NET Temporary files cleanup - OwinStartup not firing
虽然我无法完全解释 为什么 这可以解决问题,但我可以通过将项目更改为构建到常规 bin/
文件夹来解决此问题。
我很抱歉没有在我原来的问题中提到这一点,因为我认为它不相关,但我之前已经将我的 ASP.NET 项目更改为构建到 bin\Debug
和 bin\Release
取决于配置。这似乎工作得很好,但在我更改项目名称后导致了这个问题。
我知道这是旧的,但只是想补充一点,我 运行 使用自定义模板来解决这个问题。就我而言,我有一个创业公司的工作解决方案,将其设为模板,但该模板不起作用。
一探究竟,是因为新项目的名字里有个space。所以添加
[assembly: OwinStartup(typeof(myProjectName.Startup))]
我现有的启动文件修复了它。