0

我有一个用 ASP.NET MVC 编写的 Web 应用程序。一切都很好,在 Visual Studio 应用程序中工作得很好,但是一旦我把它放在 IIS 服务器上,它就会给我这个错误: Sequence contains no matching element.

这是它给我的堆栈跟踪:

[InvalidOperationException:序列不包含匹配元素]
System.Linq.Enumerable.Single(IEnumerable 1 source, Func2 predicate) +4134530 XSockets.Plugin.Framework.Helpers.PluginHelpers.GetInstance(ImportedType importsType) +143 XSockets.Plugin.Framework.Composable.Compose( T obj) +656 XSocketsServer..ctor() +170
Scyk.MvcApplication.Application_Start() +173

[HttpException (0x80004005): 序列不包含匹配元素]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +12864673
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +175
System .Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
+304 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +404
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr应用上下文)+475

[HttpException (0x80004005): 序列不包含匹配元素]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12881540 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext上下文)+12722601

有人能帮我一下吗?我不知道出了什么问题,尤其是当视觉工作室一切正常时...

编辑:我的 App_Start():

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
    new XSocketsServer();
}

我在那里启动 xsockets 服务器,但无论如何,如果我注释掉这个 XSocketsServer,它仍然会给我同样的错误。

4

3 回答 3

1

我设法重现了错误。如果您在启动调试器之前没有选择“重建解决方案”,这似乎会发生。我无法回答您是如何在带有预编译程序集的 IIS 上遇到错误的...

但是,下面的解决方法应该可以工作(刚刚快速测试过)。

  1. 安装包 WebActivator -版本 1.5.3
  2. 在 App_Start 运行后使用 PostApplicationStartMethod 启动服务器。

    [assembly: WebActivator.PostApplicationStartMethod(typeof(MyApplication.App_Start.XSocketsStart), "Start")]
    

还有班级...

namespace MyApplication.App_Start
{
    public static class XSocketsStart
    {
        public static void Start()
        {
            //Start the server.... In this case named Instance.
            new Instance();
        }
    }
}

编辑:在公共网站上添加了关于它的注释:WorkAround

问候乌夫

于 2013-04-01T16:52:42.173 回答
0

应用程序池是否处于集成模式?

于 2013-03-31T12:33:12.417 回答
0

检查您是否正在调试为 32 位或 64 位以及服务器的设置方式。如果服务器运行 64 位,您可能必须启用 32 位应用程序才能“访问”您的第三方 dll。

于 2013-03-31T12:37:36.340 回答