asp.net - OWinStartup,未找到 OWinStartupAttribute & 'Owin.IAppBuilder' 不包含 'Map' 的定义

标签 asp.net webforms signalr owin

在将我的 asp.net webform 网站从 Owin 2.1.0 升级到 Owin 3.0.1 后,我遇到了前面提到的编译错误......我也在尝试使用 SignalR 2 和 CORS。这是我的 packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="jQuery" version="2.1.3" targetFramework="net45" />
  <package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR" version="2.2.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR.Core" version="2.2.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR.JS" version="2.2.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.2.0" targetFramework="net45" />
  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net45" />
  <package id="Microsoft.Owin.Cors" version="3.0.1" targetFramework="net45" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net45" />
  <package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
  <package id="Owin" version="1.0" targetFramework="net45" />
</packages>

我的 OwinStartup 类在 appsettings 的 web.config 中定义如下:

<add key="owin:AppStartup" value="SignalRStartup, App_Code" />

这就是类的样子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Owin;
using Microsoft.Owin;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Cors;
using System.IO;

[assembly: OwinStartup(typeof(SignalRStartup))]
public class SignalRStartup
{
    public void Configuration(IAppBuilder app)
    {

        // Enable detailed errors (remember to remove it
        var hubConfiguration = new HubConfiguration();
        hubConfiguration.EnableDetailedErrors = true;
        //hubConfiguration.EnableCrossDomain = true;
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR(hubConfiguration);
    }
}

还要注意我不能使用 app.Map("/signalr", map => { ... });...

编辑: 我在 web.config 中找到了升级前没有的那些行:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="3.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Cors" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

我要放弃了,如果你有任何想法,请...

最佳答案

耶!找到了 !非常感谢这篇文章: The type or namespace IAppBuilder could not be found(missing using a directive pr an assembly reference) .

通过重新安装 Microsoft.owin 解决了我的问题,如 Иво Недев建议:

PM> Update-Package Microsoft.Owin -Reinstall
Removing 'Microsoft.Owin 3.0.1' from ww.
Value does not fall within the expected range.
Successfully removed 'Microsoft.Owin 3.0.1' from ww.
Removing 'Owin 1.0' from ww.
Successfully removed 'Owin 1.0' from ww.
Uninstalling 'Microsoft.Owin 3.0.1'.
Successfully uninstalled 'Microsoft.Owin 3.0.1'.
Uninstalling 'Owin 1.0'.
Successfully uninstalled 'Owin 1.0'.
Attempting to resolve dependency 'Owin (≥ 1.0)'.
Installing 'Owin 1.0'.
Successfully installed 'Owin 1.0'.
Installing 'Microsoft.Owin 3.0.1'.
You are downloading Microsoft.Owin from Microsoft, the license agreement to which is available at http://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device.
Successfully installed 'Microsoft.Owin 3.0.1'.
Adding 'Owin 1.0' to ww.
Successfully added 'Owin 1.0' to ww.
Adding 'Microsoft.Owin 3.0.1' to ww.
Successfully added 'Microsoft.Owin 3.0.1' to ww.

我的头现在可以止血了:-P

关于asp.net - OWinStartup,未找到 OWinStartupAttribute & 'Owin.IAppBuilder' 不包含 'Map' 的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28831453/

相关文章:

asp.net - TFS 2010 - TF14040 文件夹可能无法 check out

c# - runat ="server"不工作?

azure - 如何将VS中local.settings.json中存储的SignalRConnectionString上传到azure门户上的Azure函数

asp.net - 如何从集线器类之外获取SignalR用户连接ID?

c# - Asp.Net MVC 5.1网站在线聊天解决方案

c# - 在没有Office工具的情况下使用C#生成Excel文件

c# - 在运行时从 web.config 获取枚举值

c# - ASP.NET MVC下无法使用C#设置和获取cookie

c# - session 启动 Global.asax C# ASP.NET

javascript - 如何检查是否选择了单选按钮之一?