标签: mef

IISExpress因0xc0000008错误而崩溃

有时在使用IISExpress在VS2012中运行我的MVC4站点时,我收到以下错误并且IISExpress停止:

iisexpress.exe: Managed (v4.0.30319)' has exited with code -1073741816 (0xc0000008) 'An invalid handle was specified
Run Code Online (Sandbox Code Playgroud)

事件日志中没有任何内容,我无法在interweb上找到任何内容.

我有一些非常含糊的理论:

  • 我的网站正在使用MEF在启动时动态加载模块.也许偶尔存在竞争条件,因此IIS无法打开程序集,但我的跟踪日志显示IIS超出了启动周期的那一部分.
  • 它也有SignalR,但除了启动中心之外它还没有做多少.SignalR是相当新的,未经证实,但我更新了最新的RC2版本,结果相同.

哦,我在使用VS Dev Web服务器时也遇到了同样的错误.我还没试过完整的IIS.

别人都有线索?

谢谢

更新:

我修了几个nuget参考文献,似乎有点稳定,然后今天早上又发生了.VS输出窗口显示:

'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.Mobile\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.Mobile.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\peter.jones\AppData\Local\Temp\Temporary ASP.NET Files\root\a4aa93f7\dfa23a50\App_Web_rpzlbjhw.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\peter.jones\AppData\Local\Temp\Temporary ASP.NET Files\root\a4aa93f7\dfa23a50\App_Web_c1rjct4s.dll', Symbols loaded.
The program '[11072] iisexpress.exe: Managed (v4.0.30319)' has exited with code -1073741816 (0xc0000008) 'An invalid handle was …
Run Code Online (Sandbox Code Playgroud)

mef iis-express asp.net-mvc-4 signalr

44
推荐指数
1
解决办法
7020
查看次数

Visual Studio 2010插件写作文章/教程?

有没有人知道一些关于为Visual Studio 2010编写插件/插件的好文章/教程?

.net vsx mef visual-studio-addins visual-studio-2010

42
推荐指数
2
解决办法
2万
查看次数

MEF构造函数注入

我试图找出MEF的构造函数注入属性.我不知道如何告诉它加载构造函数的参数.

这是我正在尝试加载的属性

[ImportMany(typeof(BUsers))]
public IEnumerable<BUsers> LoadBUsers { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是我用来导入程序集的代码.

try
{
    var catalog = new AggregateCatalog();
    catalog.Catalogs.Add(new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()));
    catalog.Catalogs.Add(new DirectoryCatalog("DI")); 
    var container = new CompositionContainer(catalog);
    container.ComposeParts(this);
}
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试加载的类

[Serializable]
[Export(typeof(BUsers))]
public class EditProfile : BUsers
{
    [ImportingConstructor]
    public EditProfile(string Method, string Version)
    {            
        Version = "2";
        Action = "Edit";
        TypeName = "EditProfile";
    }
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection mef constructor-injection

39
推荐指数
2
解决办法
4万
查看次数

捕获的.NET异常意外地为空

请参阅下文,了解正在进行的操作

我有一个非常奇怪的问题,捕获的异常是null.

该代码使用MEF并努力报告组合错误.使用调试器我可以看到抛出异常(a InvalidOperationException)但是当它被下面代码中的最后一个catch块捕获时,ex变量为null.在调试器和正常执行代码时都是如此.

static T ResolveWithErrorHandling<T>() where T : class
{
    try
    {
        IocContainer.Compose(Settings.Default.IocConfiguration);
        return IocContainer.Resolve<T>();
    }
    catch (ReflectionTypeLoadException ex)
    {
        // ... special error reporting for ReflectionTypeLoadException
    }
    catch (Exception ex)
    {
        // ex is null - that should not be possible!
        // ... general error reporting for other exception types
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我用注释替换的代码是格式化错误消息的非常简单的代码.那里没什么奇怪的.

我试图改变代码以发现可能产生的影响:

  • 如果我删除第一个catch块(ReflectionTypeLoadException),则最终catch块中捕获的异常不再为null.
  • 如果我在第一个catch块中捕获另一个异常类型,则最终catch块中捕获的异常不再为null.
  • 如果我InvalidOperationException为第一个catch块添加一个catch块,则该块中捕获的异常不为null.
  • 如果我InvalidOperationException在两个catch块之间添加一个catch块,则该块中捕获的异常为null.

该项目使用代码契约,并对编译器生成的代码进行后处理以检查合同.不幸的是,我没有找到一种方法来摆脱测试目的,而不对项目进行大手术.

我目前的解决方法是不捕获ReflectionTypeLoadException并改为分支ex一般异常处理程序中的类型. …

c# exception-handling mef code-contracts

37
推荐指数
2
解决办法
4123
查看次数

用ASP.NET MVC实现MEF?

我试图找出是否有任何经验或想法使用MEF(Managed Extensible Framework(微软的新插件框架)与ASP.NET MVC.我需要创建一个标准的ASP.NET MVC,我有.但我需要提供额外的功能,如视图和控制器等,取决于我是否添加插件.它不需要动态编译即源代码......但是我放入系统的DLL ..

有什么方法可以在应用程序启动时动态加载DLL,然后在主系统中合并一个VIEWS和CONTROLLERS吗?我不知道我是否走在正确的轨道上.

然后,我想在应用程序附带的"STANDARD"视图中,我可以使用"IF THEN"来查看是否加载了插件并在用户控件中加载了MERGE.

好吧,我在这里大声说话,但我想你明白我的意思.

有任何想法吗?

asp.net-mvc plugins mef composite

33
推荐指数
1
解决办法
1万
查看次数

MEF是依赖注入框架吗?

最近宣布的.NET 4.0托管可扩展性框架(MEF)是一个依赖注入框架吗?模式和实践中的Microsoft Unity在4.0中是否会过时?MEF与Unity这样的框架相比如何?

.net mef unity-container

32
推荐指数
1
解决办法
2万
查看次数

MVVM,Unity,Prism,MEF,Caliburn - 我应该使用什么?

请帮忙 - 我迷路了!

我正在编写一个小型桌面应用程序,它有一些控件和一些屏幕.这应该稍后与一个小网站集成,也有一些屏幕.我们的想法是让用户编辑视频并选择图像,然后与朋友分享他们的结果.

桌面应用程序使用的是C#WPF,即网站 - ASP.Net MVC.

我读到使用MVVM可以更轻松地将应用程序增加到几个屏幕.所以我开始搜索并发现了Caliburn.Micro和MVVM.Light.我已经下载了一些教程,但正如我准备深入研究材料一样,我在SO上找到.那里还有Prism,MEF,Unity,ReactiveUI - 这太过分了!

我学习新东西很糟糕 - 学习WPF和ASP.Net MVC花了我很多年的时间.我不想研究很多新材料,只是为了稍后发现它不相关.而且我没有一位建筑师来指导我.

所以我的问题是:你能否对这些框架和技术进行透视,并建议我应该把重点放在研究和使用上(特别是后来用于Windows 8的内容)?

prism mef unity-container mvvm-light caliburn.micro

31
推荐指数
3
解决办法
2万
查看次数

Prism v4:Unity还是MEF?

我下载了Prism v4并运行了安装程序.我进入目录并运行以下两个批处理文件:

  • 仅限桌面 - 使用Mef QuickStart.bat打开模块化
  • 仅限桌面 - 使用Unity QuickStart.bat打开模块化

当我编译这些应用程序时,我没有看到任何真正的区别.我已经搜索了MEF vs Unity,我发现了一些优点/缺点,但没有任何具体说明是否一个人在Prism中使用"更好"(我知道这是主观的).我想也许如果我列出我的要求,有人可以指出我使用的正确技术(即使它不是Prism 4).

  • 该应用程序将使用WPF(不是 Silverlight)编写.
  • 主要应用将非常薄.
  • 主应用程序将使用Web服务来构建一个人可以访问的"apps/modules"菜单.
  • "apps/modules"将完全包含在其他托管库中.
  • 主应用程序通过反映到这些DLL中来获取视图和视图模型.
  • 主应用程序应将日志记录等服务提供给这些"应用程序/模块".

例如:

基本用户可能有以下选项:

  • ViewOnly地址记录

所有相关地址都在Address.dll内.

高级用户可能具有以下选项:

  • 新地址记录
  • 打开地址记录(更新/删除)
  • 管理用户

所有相关地址都在Address.dll内.
管理相关的所有项目都在Admin.dll中.

应用程序不应该实际引用这些DLL中的任何一个,我打算反映它们,以便如果有100个不同的模块,并且用户只能访问其中的2个,则只下载和使用其中的2个.有权访问其中10个的用户获得10个用户.

我已经通过WebService解决了下载DLL.:)

wpf mef unity-container mvvm prism-4

30
推荐指数
1
解决办法
1万
查看次数

如何将MEF与ASP.NET MVC 4和ASP.NET Web API集成

如何在同一个项目中将Managed Extensibility Framework(MEF)与ASP.NET MVC 4和ASP.NET Web API集成?

考虑一个带有MVC控制器HomeController和Web API控制器的示例应用程序ContactController.两者都具有类型的属性IContactRepository,它们依赖于MEF来解决.问题是如何将MEF插入MVC和Web API,以便通过MEF创建实例.

HomeController的:

/// <summary>
/// Home controller. Instruct MEF to create one instance of this class per importer,
/// since this is what MVC expects.
/// </summary>
[Export]
[PartCreationPolicy(CreationPolicy.NonShared)]
public class HomeController : Controller
{
    [Import]
    private IContactRepository _contactRepository = null;

    public ActionResult Index()
    {
        return View(_contactRepository.GetAllContacts());
    }
}
Run Code Online (Sandbox Code Playgroud)

的ContactController:

/// <summary>
/// Contact API controller. Instruct MEF to create one instance of …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc mef asp.net-mvc-4 asp.net-web-api

29
推荐指数
1
解决办法
2万
查看次数

如何在运行时引用mvc中的程序集

在我的Asp.Net MVC应用程序中,我有一些视图文件(.cshtml),它引用了一个外部库,它将在运行时加载.所以在应用程序启动后,我通过Assembly.Load加载程序集,我通过自己的自定义注册控制器,ControllerFactory每件事都没问题.

但是,在一些引用动态加载程序集的视图中,抛出:

编译器错误消息:CS0234:命名空间"MyApp"中不存在类型或命名空间名称"MyDynamicNamespace"(您是否缺少程序集引用?)

告诉razor编译器无法解析相关程序集的异常.

我的问题是,有没有办法在运行时注册程序集,剃刀编译器能够访问它并解决它?

请注意,我无法使用BuildManager.AddReferencedAssembly方法,因为我的程序集必须在应用程序启动后加载,并且BuildManager不支持它.

c# asp.net-mvc mef razor

24
推荐指数
2
解决办法
2736
查看次数