2

我有一些简单的 WebAPI 模型/存储库/控制器。

我能够使用以下浏览器在浏览器中测试这些星期五:

http://localhost:48614/api/departments/

...这将在浏览器页面中返回测试部门的数据。

但是,现在,同样的尝试失败了:

在此处输入图像描述

真的是这样吗?我需要跳过这些障碍,上周我的简单测试什么时候运行良好?

4

2 回答 2

3

(请注意,我不是 CC 方面的专家,但我在 StackOverflow 上玩过。其中一些陈述可能略有不正确)
代码协定不仅仅是您引用和调用以执行的程序集中的方法集合验证。代码契约是一组类型和工具,它们实际上会在编译后重写您的 IL以执行静态和运行时检查。您可以在此处阅读有关此重写器的更多信息。

它们仍然不是框架或 Visual Studio 的官方部分。您必须先下载并安装 Visual Studio 的工具,然后才能工作。

可编辑的 ASP.NET 网站在首次加载时执行 aspx/cshtml 文件的编译。由于代码协定要求您重新编写已编译的程序集,因此这必须包含在 ASP.NET 编译阶段。我不知道该怎么做(我会访问论坛以获取该信息),但这绝对不会靠魔法发生。

该错误表明在 VS 或 ASP.NET 中未正确执行编译。无论哪种方式,修复它的唯一方法是完全放弃 CC,或者按照对话框中的说明进行操作。

我会注意到 Daniel Cazzulino 有一些可通过 nuget 获得的类似 CC 的代码,其中包括许多行为类似于代码合同的辅助方法。之类的东西Assert.NotNull(someArgument, "someArgument");。如果您搜索他的帐户,您可以找到他们。

于 2013-10-14T19:03:31.593 回答
2

使用 Contract.Requires 的非通用版本,因此不需要重写 IL。文档涉及到这一点。

于 2013-12-26T23:24:44.750 回答