此代码在标记的行上引发异常:
using System;
using System.Linq.Expressions;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Action<int, int> a = (x, y) => Console.WriteLine(x + y);
ParameterExpression p1 = Expression.Parameter(typeof(int), "p1");
ParameterExpression p2 = Expression.Parameter(typeof(int), "p2");
// Here is the exception ArgumentNullException.
MethodCallExpression call = Expression.Call(a.Method, p1, p2);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我已经在VS2013(就像魅力)和VS2015社区(抛出异常)中测试了这段代码.
我跟着.Net参考源,这导致我有一些代码条件,检查是否提供了方法IsStatic.
在我的例子中,我传递的方法(a.Method)在VS2013中是静态的,并且由于某种原因在VS2015中是非静态的(实例).如果没有,它会抛出,告诉我我没有提供Instance论据.
为什么会这样?如何避免这种情况,以便Expression.Call在新的Visual Studio中重新开始工作?
如何在ASP.NET MVC应用程序中实现以下内容:
我知道如何实现4和5,但无法找到有关如何组合NTLM和表单的信息.因此,永远不会显示NTLM本机登录/密码对话框 - 透明身份验证或外观漂亮的登录页面.
该怎么办?是否应该询问用户登录名和密码?可以使用她当前的凭据(域用户名)而无需输入登录名和密码吗?
更新这些,调查相同的问题:
当我问这个时,我并不完全理解NTLM身份验证如何在内部工作.这里需要了解的重要一点是,如果用户的浏览器不能正确支持NTLM,或者用户禁用了NTLM支持,那么服务器永远不会有机会解决这个问题.
Windows身份验证的工作原理:
如您所见,不支持NTLM的浏览器不会转到步骤(3),而是会向用户显示IIS生成的错误401页面.
如果用户没有凭据,则在取消NTLM身份验证后,弹出对话框窗口浏览器也不会继续(3).
因此,我们没有机会自动将用户重定向到自定义登录页面.
这里唯一的选择是有一个"网关"页面,我们决定用户是否应该支持NTLM,如果是,请重定向到受NTLM保护的主页.
如果没有,请显示登录表单并通过手动输入登录名和密码进行身份验证.
通常通过匹配IP范围或通过检查预定义IP表来基于用户的IP地址和/或主机名做出决定.
我在VS2010中用WPF + C#编写了项目,当我通过按F5启动它(但不是Ctrl-F5,这是正常的),程序本身开始滞后,任务管理器显示在高优先级msvsmon.exe消耗几乎所有CPU.但是当我按下按钮,键入文本框等时会发生这种情况.
那么如何关闭呢?
你们都这样做了:
public void Proc(object parameter)
{
if (parameter == null)
throw new ArgumentNullException("parameter");
// Main code.
}
Run Code Online (Sandbox Code Playgroud)
Jon Skeet曾经提到他有时会使用扩展来进行检查,所以你可以这样做:
parameter.ThrowIfNull("parameter");
Run Code Online (Sandbox Code Playgroud)
所以我得到了这个扩展的两个实现,我不知道哪个是最好的.
第一:
internal static void ThrowIfNull<T>(this T o, string paramName) where T : class
{
if (o == null)
throw new ArgumentNullException(paramName);
}
Run Code Online (Sandbox Code Playgroud)
第二:
internal static void ThrowIfNull(this object o, string paramName)
{
if (o == null)
throw new ArgumentNullException(paramName);
}
Run Code Online (Sandbox Code Playgroud)
你怎么看?
首先,我BitmapImage在Image控件上加载一个Window.其次,我使用Image控件然后关闭Window.
我在一分钟内做了2-3次,而且我的记忆很快就会填满,因为当窗户关闭时,图像不会卸回.
那么如何手动BitmapImage从Image.Source控制中卸载以释放内存?
这是我的抽象类,每次我想创建一个Singleton时都必须派生它:
public abstract class Singleton<T> where T : Singleton<T>
{
private static readonly Lazy<T> _instance = new Lazy<T>(() =>
{
var constructor = typeof(T).GetConstructor(BindingFlags.NonPublic |
BindingFlags.Instance, null, new Type[0], null);
return (T)constructor.Invoke(null);
});
public static T Instance { get { return _instance.Value; } }
public Singleton() { }
}
Run Code Online (Sandbox Code Playgroud)
所以,每次我需要遵循Singleton设计模式时,我都可以这样做:
sealed class Server : Singleton<Server>
{
private Server() { }
...
}
Run Code Online (Sandbox Code Playgroud)
这是完全正确的,如果没有,为什么?
编辑:
编辑:
有没有办法在表格中存储数据:
http://pasteboard.s3.amazonaws.com/images/LDTcQpG.png
内部SettingsModel列,其定义Linq-to-Sql如下:
http://pasteboard.s3.amazonaws.com/images/LDXSPiM.png
并且DataContext选项转向:
http://pasteboard.s3.amazonaws.com/images/LE1ddhn.png
使用类SettingsModel定义如下:
namespace ElQueue.DataClasses
{
[DataContract]
public sealed class SettingsModel
{
[DataMember(IsRequired = true)]
public int[] VideoMediaData { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
这条路?...
using (SomeDataContext dataContext = new SomeDataContext())
{
SettingsModel m = new SettingsModel();
m.VideoMediaData = new int[] { 1, 2, 3 };
dataContext.MainTableSettings.InsertOnSubmit(new MainTableSetting() { SettingsModel = m });
dataContext.SubmitChanges();
}
using (SomeDataContext dataContext = new SomeDataContext())
{
var r = dataContext.MainTableSettings.Single();
}
Run Code Online (Sandbox Code Playgroud)
你看,上面的代码没有正常工作,它抛出异常,说它无法将字符串转换为MainTableSetting意味着它无法保存所有序列化数据或者加号无法反序列化它. …
我需要在它处理的每个Web请求中成为我的整个应用程序事务.
我需要启动事务,如果控制器中没有异常,则提交它.否则,回滚.
到目前为止,我有以下实现:
OnActionExecuted方法,我提交它或不提交它.以下是我使用的技术列表:
现在,我想知道的是死锁怎么样?当两个Web请求同时处理时会发生什么,此外它们将获得使用两个存储库(与其DataContext实例链接)的权利,这意味着数据库中有两个表?
例如:一个请求最初想要读取表Table1,然后Table2,另一个请求想要使用Table2然后使用Table1.
我该怎么办?
asp.net-mvc transactions transactionscope httpwebrequest asp.net-mvc-4
有没有办法在每次100%新GUID时生成而没有任何机会在整个应用程序中发生冲突?
由于我无法在八小时内回答我的问题,我想出了解决方案:
internal static class GuidGenerator
{
private static readonly HashSet<Guid> _guids = new HashSet<Guid>();
internal static Guid GetOne()
{
Guid result;
lock (_guids)
while (!_guids.Add(result = Guid.NewGuid())) ;
return result;
}
internal static void Utilize(Guid guid)
{
lock (_guids)
_guids.Remove(guid);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码是否解决了应用程序中的问题?
编辑:呃,它变得复杂了.线程安全性会降低速度.
该错误很旧,但 MS 到目前为止还没有修复它。
我有一个 VS2015 解决方案(许多项目,主要是 ASP.NET 一个),我在 VS 2017 中打开了它。
这是我尝试构建它时看到的:

所以,我想,好吧,有些引用坏了,我进入了项目引用,删除了这两个(...Sql.UnitTesting 和 ...Tools.Components),并尝试将它们添加回来。我看到了什么?当然,这个:

版本错误,它是15.1.0.0而不是之前的15.0.0.0(对于两个 DLL)。大不了,你说,但它仍然不能编译:

它告诉我版本不匹配,我必须在 web.config 文件中创建一些程序集绑定。我做了,首先手动,然后通过双击警告,正如它所建议的那样。什么都没有改变。我仍然无法构建我的项目。
以前的 SO 问题(对 Microsoft.Data.Tools.Schema.Sql.UnitTesting 的自动引用,VS2010 上的 Microsoft.VisualStudio.TestTools.UnitTesting 命名空间在哪里?)没有多大帮助,我无法删除 SSDT 组件,因为它破坏了完全加载网络项目。而我的项目不是任何类型的 SQL 测试项目。它只是一个普通的 ASP.NET 4 Web 应用程序。
我能做些什么来解决这个问题?
asp.net-mvc build-error vs-unit-testing-framework visual-studio-2017 sql-server-unit-testing
c# ×7
asp.net-mvc ×3
wpf ×2
.net ×1
bitmapimage ×1
build-error ×1
c#-4.0 ×1
c#-6.0 ×1
image ×1
isnull ×1
linq-to-sql ×1
memory ×1
ntlm ×1
null ×1
singleton ×1
transactions ×1