ASP.NET MVC项目重命名出错

79

我复制了一个之前的项目并重命名了它。当我成功地重新命名了所有的名称空间,并正确构建了它时,我运行应用程序时遇到了以下错误:

The following errors occurred while attempting to load the app.
- The OwinStartup attribute discovered in assembly 'User Manager Interface' referencing    startup type 'User_Manager_Interface.Startup' conflicts with the attribute in assembly   'Service Monitor Web Interface' referencing startup type  'Service_Monitor_Web_Interface.Startup' because they have the same FriendlyName ''. Remove or   rename one of the attributes, or reference the desired type directly.
To disable OWIN startup discovery, add the appSetting owin:AutomaticAppStartup with a value of "false" in your web.config.
To specify the OWIN startup Assembly, Class, or Method, add the appSetting owin:AppStartup with the fully qualified startup class or configuration method name in your web.config.

我已经发现,如果我注释掉下面的第一行,那么错误就会消失。

//[assembly: OwinStartupAttribute(typeof(Service_Monitor_Web_Interface.Startup))]
namespace Service_Monitor_Web_Interface
{
public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
    }
}
}

我将我的解决方案从User_Manager_Interface重命名为Service_Monitor_Web_Interface。

我似乎找不到任何旧名称的位置,但在错误中提到了它。


我有同样的问题。有任何答案或者解决方案的运气吗? - Chris Story
我刚刚删除了项目并重新开始。只是重命名了类和命名空间。 - Zapnologica
7个回答

174

我已经遇到过几次这个问题,所以我将记录下我遵循的步骤,以便自己提醒:

  1. 用新解决方案名称替换所有旧解决方案名称。
  2. 在每个项目下导航到属性并更改程序集名称默认命名空间字段为新的解决方案名称。
  3. 进入解决方案文件夹,将所有项目文件夹重命名为新的解决方案名称。
  4. 删除binobj文件夹下的所有文件。
  5. 解决方案将无法加载项目。 删除所有项目并重新添加它们。
  6. 重新构建该项目。

88
谢谢。删除“bin”文件夹的内容就足够了。 - Nicolas
2
我删除了引用原始项目的特定DLL,然后就好了!谢谢! - dunwan
1
遵循了多个重命名的教程,这是最终奏效的一个。谢谢。 - madvora
7
如果您的网站托管在Azure上,需要进行清理发布以在线删除bin和obj文件夹中的文件:https://dev59.com/z2Qm5IYBdhLWcg3wnACR - Amadeusz Wieczorek
还要导航到项目属性,按下ctrl + H并将所有旧名称替换为新名称。 - John Hogan
显示剩余5条评论

31

如果您在同一个bin文件夹中有两个包含OwinStartup类的程序集,则会出现此问题。通常,您不应该为同一个Web应用程序拥有两个OwinStartup类。

您可以通过检查bin文件夹来解决此问题。如果在将旧名称的程序集重命名后,旧名称的程序集仍然存在于bin文件夹中,则会收到此错误。要解决此问题,请删除bin文件夹中的所有内容。


12

在将解决方案的程序集重命名后,我遇到了同样的问题。

我通过确保 OwinStartupAttritbute 引用我的新程序集名称来解决这个问题。

接下来是删除 bin 文件夹中发现的旧程序集。


8
我没有重命名我的解决方案,但我遇到了这个问题。关于此问题,我在任何地方都找不到已发布的解决方案。我在同一服务器上有两个不同项目,在每个项目中都有一个owin启动类。如异常信息所建议,我只需为每个项目提供不同的“友好名称”,就可以轻松解决问题。我找到了一篇好文章:Owin Startup Class
要重命名它,您需要添加一个字符串到OwinStartup,像这样:
[assembly: OwinStartup("ProductionConfiguration", typeof(StartupDemo.ProductionStartup2))]

3
请在Web配置文件的AppSetting中添加以下标签。
<appSettings>
   <add key="owin:AutomaticAppStartup" value="false" />   
</appSettings>

1
我有两个ASP .NET MVC 5项目,Project1和Project2。
问题是两个项目的DLL文件都在同一个bin文件夹中,并且都使用Owin中间件。这意味着Project2的bin文件夹中存在Project1.dll和Project2.dll。
由于每个项目只需要其中一个,所以我只需删除Project2 bin文件夹中未使用的Project1.dll即可。

0

只有在程序集已被重命名且两个副本仍然存在于/bin目录中时,这才能正常工作。 - StuartLC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接