小编Unm*_*kar的帖子

为什么类在.Net中默认不可序列化?

开发人员必须"选择"通过显式使用来使类可序列化SerializableAttribute.如果类默认可序列化,会出现什么问题?

.net serialization types

24
推荐指数
1
解决办法
3156
查看次数

已安装ACS,但MVC 4.0应用仍然重定向,无法找到login.aspx

首先发布stackoverflow,但我喜欢这个网站!...

我已经使用MVC 4成功创建了一个功能齐全的Azure混合模型应用程序.发布并且效果很好.现在我想将auth的ACS添加到我的站点.我已经按照所有步骤进行了操作,但是当我在模拟中运行应用程序时,它无法重定向到ACS并提供页面声明它无法找到login.aspx.

我创建了一个简单的网站解决方案,只是为了证明我的ACS设置正确并且工作得很好.我注意到这两个解决方案的web.config文件差别很大.

有人试过这样做吗?任何帮助,将不胜感激.

---------解决方案-----------

我终于把一切都搞定了. 关键是要删除WebMatrix.WebData引用,因为我不需要自己执行身份验证.以下内容来自MVC4发行说明.

当WebMatrix.WebData.dll包含在ASP.NET MVC 4应用程序的/ bin目录中时,它将接管表单身份验证的URL.将WebMatrix.WebData.dll程序集添加到应用程序(例如,在使用"添加可部署依赖项"对话框时选择"带有Razor语法的ASP.NET网页")将覆盖身份验证登录重定向到/ account/logon而不是/ account默认ASP.NET MVC帐户控制器所期望的/ login.

asp.net-mvc azure wif acs

24
推荐指数
1
解决办法
3782
查看次数

使用Action词典而不是switch语句

我只是回顾一些旧的代码(有一些空闲时间),我注意到一个相当冗长的switch语句.由于获得了新知识,我已经以下面的形式重构了它:

private Dictionary<string, Action> createView
    {
        get
        {
            return new Dictionary<string, Action>()
            {
                {"Standard", CreateStudySummaryView},
                {"By Group", CreateStudySummaryByGroupView},
                {"By Group/Time", CreateViewGroupByHour}
            };
        }
    }
Run Code Online (Sandbox Code Playgroud)

你会考虑这个好习惯,还是仅仅是一个超级丰富和不必要的案例?我渴望确保我学到的新技术,仅仅为了它而不是聪明,并且它们实际上为代码增加了好处.

谢谢.

c# polymorphism refactoring conditional-statements

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

如何编写xpath以匹配除特定元素之外的所有元素

我正在编写一个XSL转换.我想编写一个模板,该模板匹配文档的所有子元素,除了一个特定节点.我的xml看起来像这样 -

<Document>
    <NodeA></NodeA>

    <NodeB></NodeB>

    <ServiceNode></ServiceNode>

    <NodeX></NodeX>
</Document>
Run Code Online (Sandbox Code Playgroud)

我想写一个匹配除所有节点模板ServiceNodeNodeANodeX.如何编写这个Xpath来获取 -

<xsl:template match="ALL Nodex Except ServiceNode">
Run Code Online (Sandbox Code Playgroud)

xml xslt xpath

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

任何重要的LINQ方法的顺序?

只是想知道,添加LINQ方法的顺序是否重要?

例如.

using(MyDataContext context = new MyDataContext())
{
   var user = context.Users
                     .Where(u => u.UserName.StartsWith("t"))
                     .OrderByDescending(u => u.CreatedDate)
                     .FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

完全一样吗?

using(MyDataContext context = new MyDataContext())
{
   var user = context.Users
                     .OrderByDescending(u => u.CreatedDate)
                     .Where(u => u.UserName.StartsWith("t"))
                     .FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

当然我可以逐个测试所有方法,但我想对逻辑有一些大概的了解.

所以:

  • 除了像FirstOrDefault(),ToList()和其他真正触发执行的方法之外,在LINQ语句中使用某种类型的顺序是否重要?

再次感谢!

.net c# linq linq-to-sql

11
推荐指数
1
解决办法
325
查看次数

需要解释当对象执行方法时对象如何被垃圾收集

在他的博客中,什么时候对象可用于垃圾收集?,Reymond Chen写道

在该对象上执行方法期间,对象可以符合收集条件.

此外,Curt Nichols通过这个例子展示了同样的观点

public class Program
    {
        static void Main(string[] args)
        {
            new TestClass().InstanceMethod();

            Console.WriteLine("End program.");
            Console.ReadLine();
        }
    }

    public sealed class TestClass
    {
        private FileStream stream;

        public TestClass()
        {
            Console.WriteLine("Ctor");

            stream = new FileStream(Path.GetTempFileName(), FileMode.Open);
        }

        ~TestClass()
        {
            Console.WriteLine("Finializer");

            stream.Dispose();
        }

        public void InstanceMethod()
        {
            Console.WriteLine("InstanceMethod");

            StaticMethod(stream);
        }

        private static void StaticMethod(FileStream fs)
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();

            Console.WriteLine("StaticMethod"); 
            var len = fs.Length;
        }
    }
Run Code Online (Sandbox Code Playgroud)

输出如预期 -

Ctor
InstanceMethod
Finalizer
StaticMethod

ObjectDisposedException is thrown
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我无法理解GC如何收集临时 …

.net garbage-collection

9
推荐指数
1
解决办法
303
查看次数

ClaimIdentity上的BootstrapContext为null

我用.NET 4.5创建了一个新的ASP.NET MVC应用程序.我已成功使用STS设置身份验证.身份验证流程正常,我可以在Thread.CurrentPrincipal上获取包含所需声明的ClaimsIdentity.

现在我需要引导令牌来保护对我的服务层的调用.我在identityConfiguration元素上将saveBootstrapContext设置为true.

<system.identityModel>
    <identityConfiguration saveBootstrapContext="true">
Run Code Online (Sandbox Code Playgroud)

但是,ClaimsIdentity上的BootstrapContext属性始终为null.

var identity = Thread.CurrentPrincipal.Identity as ClaimsIdentity;
var context = identity.BootstrapContext; // context is always null
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?这被认为是直截了当的:(

- - - - - - 解决 - - - - - -

重新启动系统后,此问题已得到解决.请注意,在iisreset之后它没有解决.后来我更改了配置以使用Microsoft.IdentityModel而不是System.IdentityModel.我能够重现这种行为.再次重启后,我又能够再次获得引导令牌.其他人有同样的行为吗?

asp.net-mvc claims-based-identity wif ws-federation .net-4.5

8
推荐指数
2
解决办法
7567
查看次数

面向方面的日志使用Unity\T4 \其他任何东西

在我的应用程序中,我们有一个跟踪记录器.我们在跟踪方法名称和参数值的大多数重要方法的开头和结尾添加了日志语句.现在这些跟踪语句使代码膨胀,阅读它们有点痛苦.

我正在考虑如何将代码的这一方面与业务逻辑分开.

今天我读到了Unity的拦截框架.如果可以使用通用记录器拦截我的方法调用并记录方法名称和参数值,我有一个想法.我不确定是否可以使用反射读取方法参数.Unity可以像这样使用吗?

另一个想法是运行T4代码生成引擎,在用特定属性修饰的所有方法的开头和结尾生成日志记录语句.由于我对T4知之甚少,有谁知道这是否可以实现?

有没有其他方法可以将日志记录代码与业务逻辑分开?

干杯,Unmesh

.net t4 logging aop unity-container

7
推荐指数
1
解决办法
3260
查看次数

嵌套类型问题

我只是尝试创建这个简单的实现:

class Test
{
   private int abc = 0;

   public class TestClass
   {
      private void changeABC()
      {
         abc = 123;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

如果我编译它,它会抱怨:

无法通过嵌套类型"B.Test.TestClass"访问外部类型"A.Test"的非静态成员

我不喜欢设置的解决方案: static int abc = 0;

还有其他解决方案吗?

c# nested-class

7
推荐指数
2
解决办法
6372
查看次数

如何使用XSLT输出重复的元素?

我有xml看起来像这样 -

<Root>
  <Fields>
    <Field name="abc" displayName="aaa" />
    <Field name="pqr" displayName="ppp" />
    <Field name="abc" displayName="aaa" />
    <Field name="xyz" displayName="zzz" />
  </Fields>
</Root>
Run Code Online (Sandbox Code Playgroud)

我希望输出只包含那些具有重复name-displayName组合的元素,如果有的话 -

<Root>
      <Fields>
        <Field name="abc" displayName="aaa" />
        <Field name="abc" displayName="aaa" />
      </Fields>
</Root>
Run Code Online (Sandbox Code Playgroud)

我怎么能用XSLT做到这一点?

xml xslt

6
推荐指数
1
解决办法
5514
查看次数