小编phi*_*ady的帖子

System.Web.Http.Authorize与System.Web.Mvc.Authorize

哪个授权属性?
System.Web.Http.Authorize
System.Web.Mvc.Authorize

using System.Web.Mvc      // or
using System.Web.Http  
Run Code Online (Sandbox Code Playgroud)

典型的控制器

    [Authorize]
    public class SomeController : Controller
Run Code Online (Sandbox Code Playgroud)

我们有控制器注释[Authorize] 我注意到由于使用命名空间,注释在技术上引用了不同的属性类.

该项目包含MVC控制器和WEBAPI控制器.

我应该使用哪一个?为什么?如果我不解决这个问题,我们可能会遇到什么问题?

asp.net asp.net-mvc asp.net-web-api

59
推荐指数
1
解决办法
9922
查看次数

为什么要使用迭代而不是尾递归?

什么是设计气味,递归的不良做法?一旦我看到resharper暗示改进,我就快速浏览了谷歌.看到关于将尾部递归重新分解为迭代并将其称为设计气味的众多评论.

public static void DebugOutput2(Exception ex) {
    if (ex == null) {
        return;
    }
    Debug.WriteLine(ex.Message);
    if (ex.InnerException != null) {
        DebugOutput2(ex.InnerException);
    }
}

// WAS REFACTORED TO

public static void DebugOutput(Exception ex) {
    if (ex == null) {
        return;
    }
    while (true) {
        Debug.WriteLine(ex.Message);
        if (ex.InnerException != null) {
            ex = ex.InnerException;
            continue;
        }
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:获得C#编译器处理评论.看起来它现在是递归的
Target .net 4.5.C#5.0

用于尾递归版本的ILDASM输出:显示递归调用而不是迭代

.method public hidebysig static void  DebugOutput(class [mscorlib]System.Exception ex) cil managed
{
  // Code size       54 (0x36)
  .maxstack  2 …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns

19
推荐指数
2
解决办法
2466
查看次数

实体框架app.config设置.默认出厂值和值=使用EF6.0

<entityFramework>
   <defaultConnectionFactory 
       type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
         <parameter value="v11.0" />           
      </parameters>
   </defaultConnectionFactory>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)

编辑:问题被重新编写/重新编写.

什么<parameter value="v11.0">意思?或者更好说为什么只有Db值?使用完整的数据源怎么样?什么是LocalDbConnectionFactory暗示

这些默认值对我来说很难理解.

使用Sql默认连接工厂和参数使用SQL Server LocalDbConnectionFactory不起作用.

这确实有效:

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="Data Source=localhost; Integrated Security=True; MultipleActiveResultSets=True" />
Run Code Online (Sandbox Code Playgroud)

entity-framework

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

Unity容器和对dotnet Core/netstandard的支持

所以MS掉线(免费获得)Unity.Unity
未来 github存储库在GitHub上显示为非活动Unity

有人知道Unity发生了什么事吗?
如果Unity是dotnet核心下的死胡同,是否有针对dotNet Core的IOC依赖注入工具?

编辑:仍在等待关于Unity的新闻.
搜索的替代方案:StructureMap , AutoFac
或我们的选择,SimpleInjector 它在GitHub上非常活跃.每天有很多下载已经从Nuget单独下载了大约1亿.它的快速,非常好的文档,一个很好的API,具有良好的可扩展性. Microsoft.Extensions.DependencyInjection将是下一个选择.我们没有ASP.NET项目,如果你这样做,那么一定要看MS DI.您也可以在DotNet Core中使用MS DI,
我更喜欢SimpleInjector.该文档非常好,每天下载量超过500次,总计超过100万次,Simpleinjector已超过临界质量.

EDIT2: Unity可能会为.netcore做一个凤凰.它还在踢.
请参阅Unity for github上的Unity for .netStandard讨论.虽然还没有很多活动.至少有一些支持让它在Core上运行.问题是它太晚了吗?晚期移民可能仍然受益.就目前而言(2018年),它看起来仍然需要替代方案.
SimpleInjector正在取得可靠的进展作为合法的替代品.
请参见SimpleInjector Nuget页面.下载量近300万,每天> 1k.截至2018年6月.

c# dependency-injection unity-container .net-core

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

使用EntityTypeConfiguration <T>时的抽象域模型基类

获取Base对象属性的中心映射是否有一些技巧?使用EntityTypeConfiguration时是否有一些抽象类的简单模式.
非常感谢.我无法申报课程

Public class BaseEntityConfig<T> : EntityTypeConfiguration<T>
Run Code Online (Sandbox Code Playgroud)

类似的问题,我无法得到工作的答案 如何创建和使用泛型类EntityTypeConfiguration <TEntity>动态方式生成EntityTypeConfiguration:类型'TResult'必须是不可为空的值类型

public  abstract class BosBaseObject
{
  public virtual Guid Id { set; get; }
  public virtual string ExternalKey { set; get; }
  public byte[] RowVersion { get; set; }
}
  public class News : BosBaseObject
{
    public String Heading { set; get; }
}


public class NewsMap : EntityTypeConfiguration<News>
{
    public NewsMap()
    {
      //Base Object Common Mappings
      // How can we use a central mapping for all Base Abstract …
Run Code Online (Sandbox Code Playgroud)

c# ef-code-first

6
推荐指数
2
解决办法
4169
查看次数

在 .NET 中创建的 Guid 的前四个字节的分布有多均匀?

网络和 StackOverflow 上有大量有关 GUID 的信息。关于独特性的问题确实层出不穷。这不是一个关于2^128唯一性的问题

我的问题是确定.NET 中 GUID 的第一部分(具体来说是前四个字节)的随机性。根据研究,它被认为是时间戳的最低有效 32 位。但是时间戳是如何转换的呢?这到底有多随机?

有谁知道.NET 的第一部分是如何构建的以及是否真正均匀分布在 4 个字节中?

如何使用时间戳来构造前 32 位

时钟精度如何影响它?

Microsoft 是否尝试过确保前 4 个字节是否趋于随机?

原因:大量 Guid 使用对于前 4 个字节中的良好随机 GUID 有 2 个主要业务案例。如果每个新 GUID 的分布均匀,则可以根据需要的分区数量使用基于前 1、2、3 或 4 个字节的表分区。我见过一个 20 亿行的表,每天有 1000 万次插入,有 128 个分区,使用前 2 个字节作为分区键。注意,在 DB2 下,必须使用密钥的第一部分。引用 DB2 DBA。这极大地提高了数据库的吞吐量。第二个用途是批处理作业并行密钥分配。如果您知道批处理任务大约有 N 行,则可以将键范围分配给并行作业。如果没有同质分割,调度程序必须首先计算每个作业的起始键和终止键。如果这意味着读取 1 亿个数据并在内存中管理它们只是为了调度工作,那么前 x 分钟就会因作业调度而丢失。在我看到的示例中,时间约为 15 分钟。因此,有 2 个充分的理由使用并希望均匀分布 GUId。

SAP Banking 系统实际上引入了自定义 GUID 例程来解决 GUID 第一部分中缺乏随机性的问题。对于那些有权访问 SAP …

.net guid

5
推荐指数
1
解决办法
869
查看次数

运算符'=='与操作数类型'Guid'和'Guid'不兼容使用DynamicExpression.ParseLambda <T,bool>

我正在使用 Dynamic Linq库 , 有源代码和基本文档以及Nuget版本

PM> Install-Package DynamicLINQ

我正在尝试构建一个涉及Guids的where子句

我试过用字符串"Id == @0".参数数组只是一个object[]值(Guid xxxx)

  var whereClauseSB = BuildLogicalKeyWhereClause2(entity, logicalKey);  //build string
  var parms = BuildParamArray(entity, logicalKey); // object[]
  var whereLambda = Ofsi.Bos.Core.DynamicExpression.ParseLambda<T, bool>(whereClauseSB.ToString(),parms);  //parse
Run Code Online (Sandbox Code Playgroud)

DynamicExpression.ParseLambda中抛出异常

运算符'=='与操作数类型'Guid'和'Guid'不兼容

  • 我也试过GUID和String.(失败)
  • 我试过和"Id = @ 0"(失败).
  • String == string工作,Int32 == int32但不是Guid == Guid没有

有任何想法吗?

c# linq dynamic dynamic-linq

5
推荐指数
1
解决办法
4161
查看次数

计算MVC4中响应长度的简单方法

我试图计算一个长度HTTP Response.似乎流不想播放.(没有允许读取.并且Content-Length似乎没有设置)我希望简单地在HttpContent响应上调用一些length属性.从那以后,我用谷歌搜索,看到了什么看起来像我不明白的过滤器周围的复杂解决方案.是否有可能访问长度(内容本身是额外的选项)如果不是我会欣赏一个链接到'mvc4/.net 4.5过滤器'的例子,我应该工作,直到我明白.:-)

   public override void Init()
    {
        base.Init();
        EndRequest += new EventHandler(EndRequestHandler);
    }
    public void EndRequestHandler(object sender, EventArgs e) {
        var     admService = new AdminServices();
        admService.HTTPTrace(Context);
    }


 public void HTTPTrace(HttpContext httpContext) {
        try {
            var eventTrace = new MasterEventTrace();
            eventTrace.RemoteAddress = req.UserHostAddress;
            eventTrace.RequestLengthBytes = req.ContentLength;

          //  var targetMemoryStream = new MemoryStream();
          //   res.OutputStream.CopyTo(targetMemoryStream);
            int len;
            int.TryParse(res.Headers["Content-Length"], out len );
            eventTrace.StatusCode = res.StatusCode;
            eventTrace.ResponseLengthBytes = len;    // <<<<<<< HOW to calculate this
Run Code Online (Sandbox Code Playgroud)

编辑:基于达林的回应,我得到了这个工作,谢谢你Darin 我做了一些调整,以适应这种情况,但除此之外建议.它显示了Global.asax.cs中的更多信息,并根据需要记录了请求和响应信息.

//Global.asax.cs
  public …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc

5
推荐指数
1
解决办法
2205
查看次数

动态对象强制转换为仅在运行时已知的类型

情况: 仅在运行时键入baseType.objectInstance是baseType类型的子类,objectInstance是从对动态方法的调用中检索的

需要:

Type baseType = ...; // obtained at runtime
var baseDynamicInstance = (basetype) objectInstance; // or reflection cast
Run Code Online (Sandbox Code Playgroud)

硬编码时,它的工作原理

   var oi = (PartnerBase) objectInstance;   // this works
Run Code Online (Sandbox Code Playgroud)

尝试:

public object CastPocoInstance(Type targetType, object objectInstance) {
    MethodInfo castMethod = objectInstance.GetType().GetMethod("Cast").MakeGenericMethod(targetType); // <<< NULL REF here
    object castedObject = castMethod.Invoke(null, new object[] { objectInstance });
    return castedObject;
   }
Run Code Online (Sandbox Code Playgroud)

错误: null对象引用错误.
在即时窗口中,我看到objectInstance.GetType().GetMethod("Cast")返回null
objectInstance.GetType.GetMethods()//在即时窗口中显示一个列表.//没有显示强制转换方法

我看了很多例子,这对我来说是Type.GetMethod("Cast")是正确的.但它没有用.所以显然我做错了什么.

有小费吗

编辑:没有向下转换为基本硬编码的调用错误

[Microsoft.CSharp.RuntimeBinder.RuntimeBinderException] = {"The best overloaded method match for 'P42.RepositoryBase.GetEntityState(P42.Core.PartnerBase)' has some invalid arguments"}

EDIT2: AN …

c#

5
推荐指数
1
解决办法
7756
查看次数

DBContext DBSet查询和无跟踪选项

根据实体框架和DbContext - 对象跟踪等其他帖子, 看起来简化的DBContext界面不会公开设置基本查询的无跟踪.一个小博客,展示如何使用对象上下文 http://blogs.microsoft.co.il/blogs/gilf/archive/2009/02/20/disabling-change-tracking-in-entity-framework.aspx

没有跟踪通过DbContext加载结果的好方法是什么?如果使用Dbcontext,表现如何意识到这一点?即具有基本GetList方法我想因性能原因而改进.

public DbSet<T> EntityDbSet { get { return _context.Set<T>(); } }
public virtual IQueryable<T> GetList(Expression<Func<T, bool>> predicate)
    {
         return EntityDbSet.Where(predicate);
    }
Run Code Online (Sandbox Code Playgroud)

entity-framework

4
推荐指数
1
解决办法
4733
查看次数

SAP Stringbuilder for ABAP?

我正在寻找一种更快的方法来添加到ABAP中的现有字符串.

ABAP版本NW 7.x.

目前字符串连接需要很长时间,特别是一旦字符串变大.我们需要构建大于10 mb的字符串.

该字符串在逻辑上构造有许多x = x + y操作.

concatenate l_main_string l_extra into l_main_string. " very slow
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法在ABAP中构造大字符串?也许我们可以调用Kernel工具?

编辑:根据反馈和答案发布.
最有用的是由VWegert关联的博客.真的是这个问题的答案.似乎关键问题是客户使用的旧内核.

&&和Concatenate在我们的系统上非常相似.(NW 7.50)1.46s vs 1.50s repsectively.显然,同样的优化正在运行,并且它以可接受的方式工作.

  METHOD PERF_TEST_STRING.  " 1.50 sec
     DATA: n TYPE i value 5000000,
          lv_string TYPE string.
         do n times.
            CONCATENATE lv_string 'ABCDEFGHIJ0123456789' into lv_string.
        ENDDO.
        r_len = strlen( lv_string ).
    ENDMETHOD.
    METHOD PERF_TEST_STRING2. "1.46  
        DATA: n TYPE i value 5000000,
              lv_string TYPE string.
        do n times.
          lv_string = lv_string && 'ABCDEFGHIJ0123456789'.
        ENDDO.
        r_len = …
Run Code Online (Sandbox Code Playgroud)

string sap abap

4
推荐指数
1
解决办法
663
查看次数

HotTowel EF6 MVC5 Angular Breeze版挑战

是否可以让HotTowel和EntityFramework 6一起工作?

我们的DataAccess Layer已升级到EF6.我们在Web层中对EntityFramework的唯一引用是Web.Config

 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

 <entityFramework>
   <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
      <parameter value="Data Source=.; Integrated Security=True; MultipleActiveResultSets=True" />
      </parameters>
   </defaultConnectionFactory>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)

我们无法更新ER版本6,因为HotTowel有一个Breeze Update可用.但是如何解决HotTowel

安装失败.回滚... install-package:将"Microsoft.AspNet.WebApi.OData 5.0.0"更新为"Microsoft.AspNet.WebApi.OData 4.0.30506"失败.无法找到与"Microsoft.AspNet.WebApi.OData 4.0.30506"兼容的"Breeze.Server.WebApi2"版本.

编辑: 我们正在使用KNOCKOUT.js库版HotTowel.

entity-framework breeze entity-framework-6 hottowel asp.net-mvc-5

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