- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何仅使用 Linqpad 或控制台应用程序启动并从我的 mvc 应用程序的某些操作中获取 ActionResult?
我知道我可以创建 MvcApplication 类实例:
var mvcApplication = new Web.MvcApplication();
然后创建 Controller :
var homeController = new Web.Controllers.HomeController();
甚至运行 Controller 的 Action
homeController.Index()
但它什么也没返回。 mvc 应用程序的生命周期是什么?我应该调用哪些方法来模拟来自用户的网络请求?
编辑
这里有一些关于 ASP.NET MVC 生命周期的好帖子,但不幸的是我还不能解决我的问题
http://blog.stevensanderson.com/2007/11/20/aspnet-mvc-pipeline-lifecycle/
最佳答案
我知道这是一个老问题,可能会在其他地方得到解答,但在我正在处理的项目中,我们可以使用 Linqpad 调试 Controller 操作并获取返回值。
简单地说,您需要告诉 Linqpad 返回一些东西:
var result = homeController.Index();
result.Dump();
您可能还需要模拟上下文并将 visual studio 作为调试器附加。
完整代码片段:
void Main()
{
using(var svc = new CrmOrganizationServiceContext(new CrmConnection("Xrm")))
{
DummyIdentity User = new DummyIdentity();
using (var context = new XrmDataContext(svc))
{
// Attach the Visual Studio debugger
System.Diagnostics.Debugger.Launch();
// Instantiate the Controller to be tested
var controller = new HomeController(svc);
// Instantiate the Context, this is needed for IPrincipal User
var controllerContext = new ControllerContext();
controllerContext.HttpContext = new DummyHttpContext();
controller.ControllerContext = controllerContext;
// Test the action
var result = controller.Index();
result.Dump();
}
}
}
// Below is the Mocking classes used to sub in Context, User, etc.
public class DummyHttpContext:HttpContextBase {
public override IPrincipal User {get {return new DummyPrincipal();}}
}
public class DummyPrincipal : IPrincipal
{
public bool IsInRole(string role) {return role == "User";}
public IIdentity Identity {get {return new DummyIdentity();}}
}
public class DummyIdentity : IIdentity
{
public string AuthenticationType { get {return "?";} }
public bool IsAuthenticated { get {return true;}}
public string Name { get {return "sampleuser@email.com";} }
}
系统会提示您选择一个调试器,然后选择构建您的应用程序的 Visual Studio 实例。
我们有针对 MVC-CRM 的特定设置,因此这可能不适用于所有人,但希望这能帮助其他人。
关于c# - 从 linqpad 或控制台应用程序运行 asp.net mvc 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15477996/
根据 LINQPad 网站,有几种不同的构建 原版版本(homepage 上的“立即下载”) X64 版本 AnyCPU build http://www.linqpad.net/Beta.aspx
总NOOB问题。我已经使用新的linqpad大约20分钟了。伟大的! 但是现在我想在数据库中删除一行。我正在使用EF5.0连接。我似乎无法在帮助文件或网上找到任何内容。我唯一能找到的是DeleteOn
在 LINQPad 的左下角,有一个显示查询的区域。一个选项卡是我的查询,另一个选项卡是 sample 。我找不到像在“我的查询”中那样添加多个文件夹的方法,就像在“示例”选项卡中一样。我尝试右键单击
在 Linqpad 中重新运行查询之间会保存什么状态?我假设没有,所以如果你运行一个脚本两次,它两次都会有相同的结果。 但是,在同一个 Linqpad 选项卡中运行下面的 C# 程序两次。你会发现第一
Linqpad 是唯一一个类似脚本的环境,我可以在其中使用我的大型代码库。它是唯一适合我的环境的原因是其他解决方案(ironpython 等)总是无法从 app.config 正确加载配置,但 lin
我的团队有很多我们通过 git 存储库共享的 linqpad 脚本。我们使用对我们自己的代码库的引用,其中每个团队成员的本地路径可能不同。因此,如果我们想要运行这样的脚本,我们需要首先编辑它的引用以指
在 LinqPad 中,我可以使用类似的东西 Console.ReadKey(); 或者 Util.ReadLine(); 但是,如何以可以实际输入输入的方式运行这些程序? UI 没有控制台窗口! 最
当我在 Linqpad 中运行查询时,我想在针对生产数据库运行查询时做一些额外的检查,是否有一种方法可以通过编程方式检测当前 linqpad 脚本的连接字符串是否处于事件状态标记为生产? 最佳答案 是
LINQPad 中显示的结果是有限的。如果对象嵌套很深,则会显示一条红线。 我想增加一个限制,这样我就可以看到更多的嵌套对象。 你知道怎么做吗? (我在选项中没有找到。) Background not
使用 LINQPad,使用扩展方法 Dump()、Console.WriteLine 或 Debug.Writeline,这些值将出现在结果窗口中。 有没有办法在 linqpad 脚本运行期间清除此结
我有一个 LINQPad 脚本文件 *.linq 并且有数据库连接的密码。如何提取密码? (看起来像是Base64编码的二进制数据。) 最佳答案 LINQPad 使用 DPAPI 加密密码。因此,只有
如何在 Linqpad 的文本编辑器中启用自动换行? 最佳答案 现在 LINQPad 中没有自动换行选项。您可以注册一个请求 here . 截至 Linqpad Beta v4.48 ,现在支持自动换
有没有办法,当我在 LINQPad 中打开查询时,它会执行它并将我置于仅结果 View 中?其预期用例是在 LINQPad 中编写小型应用程序。我不想每次都按 F5 和 Ctrl+Shift+R。 这
有没有办法在LINQPad中捕获结果面板的内容;也就是说,以编程方式捕获它,例如将其保存到文件中? 最佳答案 查看 LINQPad 的扩展方法。这是一个很好的堆栈溢出问题: LINQPad [exte
我正在引用 NuGet 包 ABCpdf ,它提供了一个托管的 DLL abcpdf.dll以及四对原生 DLL,在 x86 和 x64 版本中: packages\ABCpdf\11.2.2\bui
LinqPad 中的所有 Linq 查询(来自 SQL 的查询数据)都是只读的吗?我无法编辑数据,只能读取它。对? 下面的查询生成只读 View ,我没有找到编辑数据的方法。 from u in Us
我正在尝试为 WinForm 调用 ShowDialog(创建表单的实际代码位于 .linq 脚本中)并且一切正常,但对话框未显示在 LINQPad 应用程序的中心。当多个显示器在运行并且我盯着 LI
我观察到,如果我刷新或重新加载 LINQPad 指定的 Plugins 目录中的 dll,我还必须关闭并重新打开当前脚本才能使库更改生效 - 这当然是有道理的。我的问题是是否有一个命令或键专门执行此重
我正在尝试为 WinForm 调用 ShowDialog(创建表单的实际代码位于 .linq 脚本中)并且一切正常,但对话框未显示在 LINQPad 应用程序的中心。当多个显示器在运行并且我盯着 LI
默认情况下,LINQPAD 中的示例文件位于何处?在 C:\Users\MyUserName\AppData\Roaming\LINQPad\Samples 中,我看到了一些示例,但它不包括默认示例。
我是一名优秀的程序员,十分优秀!