我正在开发一个Asp.Net MVC 4应用程序,我在其中使用SignalR 2.0.1并使用Owin Startup类映射它,它最初工作正常。
当我尝试重建我的应用程序时突然说它找不到类型为IAppbuilder
的命名空间。
以下是我的启动课程
using Microsoft.Owin;
using Owin;
using WhiteBoardApp;
namespace WhiteBoardApp
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
我也安装了Owin
包,由于某些原因我找不到Owin Startup类,所以我只添加了一个普通类并包含了所需的所有引用。
我可以知道我在哪里犯了错误
答案 0 :(得分:126)
尝试使用Package Manage Console并执行
Update-Package Owin -Reinstall
答案 1 :(得分:20)
我遇到了类似的问题。但相反,Owin问题导致了Microsoft.Owin,显然是
Update-Package Owin -Reinstall
没有工作,Update-Package Owin
BUT
Install-Package Microsoft.Owin
对我来说没问题,谢谢。
答案 2 :(得分:7)
IAppBuilder接口位于Owin包下。只需在类文件中添加引用:
使用Owin;
重建。你的项目会选择它。
我不知道为什么VS没有选择这个,但它没有。一旦我将这个引用添加到我的项目中,那么一切都已落实到位。
答案 3 :(得分:3)
我在构建项目时遇到了同样的问题。以下是帮助解决问题的步骤:
Solution Explorer
并查找您的项目References
;您应该看到有问题的参考References
并打开Manage NuGet Packages
Microsoft.Owin
;加载后显示它已经安装(它是,但它安装不正确。检查属性>版本在步骤2显示0.0.0.0
)Force uninstall, even if there are dependencies on it
无法安装
Microsoft.Web.Infrastructure
,因为它已存在于packages文件夹中。回滚......
Microsoft.Web.Infrastructure
以下是我已解读的解决此类问题的替代方案。
答案 4 :(得分:2)
我的Visual Studio 2013由于某种原因没有意识到引用路径存在。所有添加的包都显示了参考文献前面的黄色感叹号。我检查了../packages/但是所有文件都存在,我还打开了引用正确路径的.csproj文件。
关闭并打开解决方案会返回很多错误,无法加载解决方案中包含的项目。
由于某些无法解释的原因,重新启动Visual Studio 2013节省了一天。
答案 5 :(得分:1)
我在F#中使用的等价物存在隐藏IAppBuilder的问题。事实证明,Owin规定被解释为一个不完整的System.Web.Http.Owin引用,即使引用了提供Owin命名空间的Owin.dll。
open System.Net.Http
open System.Web.Http
open Microsoft.Owin
open Owin
通过重新排列使用方法解决了问题:
open Microsoft.Owin
open Owin
open System.Net.Http
open System.Web.Http
...被授予,这可能是F#编译器特有的bug,并且在C#和其他地方可以更好地处理名称冲突。
答案 6 :(得分:0)
就我而言,我在项目文件夹和vs解决方案文件(.sln)的位置之间移动。完成重新添加项目的操作后,在解决方案级别上有一个程序包文件夹,其中一个保留在项目子文件夹中。 这样,在该项目中,.csproj文件中的相对软件包文件夹链接被弄乱了。
此线程中有关nuget软件包管理器的重新安装或其他提示很有帮助。我注意到,在重新安装了几个软件包之后,在git源代码diff中,csproj文件中的packages文件夹的路径已更改。
之前
<?php // show welcome back message if coming from the waiting list email
$name = '';
if (isset($_GET["name"]))
{
$fullname = $_GET["name"];
}
?>
之后
<HintPath>packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll</HintPath>
因此,如果您遇到同一问题,并且有很多nuget包,则关闭整个解决方案可能会更容易,在类似vscode的文本编辑器中打开csproj文件,并使用搜索并替换。然后只需保存,关闭,重新打开VS中的解决方案并还原nuget包即可。这应该够了吧。 (无论如何,如果没有获得正确的软件包,则应在项目级别删除本地软件包文件夹,以使项目真正失败。)
答案 7 :(得分:0)
这是一个订购问题。
using Microsoft.Owin;
using Owin;
首先要定义Microsoft.Owin,然后在已经导入的Microsoft名称空间下找到Owin。如果将鼠标悬停在使用Owin的Owin上,您应该会看到它已解决为Microsoft。Owin再一次出现,此外,IDE将使用Owin作为未使用的冗余引用而变灰。
要做:
using global::Owin;
这说明编译器不要在已定义的名称空间(例如Microsoft。名称空间)下寻找Owin。
答案 8 :(得分:-1)
http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr
检查您正在使用的视觉工作室 您可以找到以下评论
注意:如果您使用的是Visual Studio 2012,则SignalR Hub类(v2)模板将不可用。您可以添加一个名为ChatHub的普通类。
另外 注意:如果您使用的是Visual Studio 2012,则OWIN启动类模板将不可用。您可以添加一个名为Startup的普通类。