当前上下文中不存在WebApiConfig。

8

我正在使用asp.net mvc 5。我正在按照以下教程进行操作, http://venkatbaggu.com/signalr-database-update-notifications-asp-net-mvc-usiing-sql-dependency/

但是在Global.sax文件中,它说“WebApiConfig在当前上下文中不存在”。为什么会出现这种情况?

以下是一些代码

protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        GlobalConfiguration.Configure(WebApiConfig.Register); //this is where error shows
        //Start SqlDependency with application initialization
        SqlDependency.Start(connString);
    }

你确定 WebApi 所需的任何程序集都没有丢失吗?或者有版本不匹配的情况吗? - Mukesh Modhvadiya
3个回答

22

你的App_Start文件夹中是否有一个WebApiConfig.cs文件? 如果你查看教程在GitHub上引用的源代码,那么WebApiConfig文件如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace SignalRDbUpdates
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

请查看GitHub仓库中的App_Start文件夹:https://github.com/venkatbaggu/signalrdatabasenotifications/tree/master/SignalRDbUpdates/App_Start


谢谢。WebApiConfig文件丢失了。 - Thilina De Silva

1

对于我来说,我已经移动了代码文件夹,但由于某些原因,

WebApiConfig.cs
AuthConfig.cs
Filter.cs
BundleConfig.cs

从项目中排除了它们,重新包含它们后,它又可以正常工作了。 由于文件夹没有展开,我从未意识到它们已被排除。


0

你遇到这个错误的时候不清楚是在编译时还是调试时吗?

如果是在编译时发生的,请检查 WebApiConfig.cs 文件是否存在。

如果是在调试时发生的,那么你需要检查是否对该文件进行了更改,因为默认实现应该可以正常工作。

也许问题出在下一行?

SqlDependency.Start(connString);

检查连接字符串是否正确。

编辑: 我尝试下载并运行该项目,首先遇到了以下错误:

由于以下原因进入中断模式失败:源文件“e:\BlogDemos\SignalRDbUpdates\SignalRDbUpdates\Global.asax.cs”不属于正在调试的项目

这很奇怪,因为我根本没有“E”驱动器。但是在将Managaed Pipilene Mode更改为Classic,然后再更改回Integrated(默认值)并构建项目后,它开始正常工作。


谢谢。WebApiConfig文件丢失了... 但是现在我运行应用程序时,SqlDependency.Start(connString)出现了一个未处理的异常。 - Thilina De Silva
你需要检查你的连接字符串 "DefaultConnection" 是否正确。如果 SqlDependency 继续抛出异常,那么你可以先尝试使用一些简单的东西(如 SqlConnection)来测试连接。然后再使用 SqlDependency 类。 - Aleksandr Ivanov

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