小编Abh*_*tel的帖子

TPL与反应框架

什么时候会选择使用Rx而不是TPL,或者2个框架是否正交?

根据我的理解,Rx主要用于提供事件的抽象并允许组合,但它也允许提供异步操作的抽象.使用Createxx重载和Fromxxx重载并通过处理返回的IDisposable取消.

TPL还通过任务和取消功能提供操作抽象.

我的困境是什么时候使用哪种情况?

.net c# task-parallel-library system.reactive

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

VSCODE 中的 YAML 文件格式

我刚刚开始使用 VSCODE,每次在现有 YML 文件中粘贴 YAML 代码时都会遇到麻烦。基本上,编辑器似乎会自动格式化文档,这样做会弄乱文档中的重要空间。这会导致 Azure Devops 中的构建中断。尽管 VS code 可以很好地将文档格式化为可折叠区域,但格式化带来的烦恼使其难以使用。任何帮助,将不胜感激。

前:

前


后: 在此输入图像描述

visual-studio-code

41
推荐指数
3
解决办法
11万
查看次数

基于参数类型重载web api动作方法

有没有办法基于Action方法的重载执行参数类型?即是否可以在控制器中执行以下操作

public class MyController : ApiController
{
   public Foo Get(int id) { //whatever }

   public Foo Get(string id) { //whatever }

   public Foo Get(Guid id)  { //whatever }
}
Run Code Online (Sandbox Code Playgroud)

如果是这样,需要对Route表进行哪些更改.

asp.net-web-api

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

System.DirectoryServices.DirectorySearcher导致"算术运算导致溢出"错误

我收到以下与使用DirectorySearcher.FindOne()或查询AD相关的间歇性错误 FindAll().

System.OverflowException: Arithmetic operation resulted in an overflow.
     at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.GetCurrentResult()
     at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.get_Current()
     at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.System.Collections.IEnumerator.get_Current()
Run Code Online (Sandbox Code Playgroud)

这是在一个Web应用程序中发生的,似乎是在应用程序运行了几个小时后发生的.

这是Microsoft Connect上的文档问题,但看起来它已标记为"不可重现"并已关闭.

我在这里找到的唯一解决方案是定期回收应用程序池,这是一个相当苛刻的解决方法,当用户处于工作中时不可行.

有没有人经历过这个,如果是这样,这是如何解决的?

我曾尝试使用缓存,但这只会延迟不可避免的事情,直到你达到AD调用次数的某个阈值,因为人们已经报告每次调用API时它会泄漏内存.

任何帮助将非常感激.

.net directoryservices memory-leaks active-directory

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

为.NET开发人员学习Python

我已经在C#中积极开发了好几年了.我主要在.NET堆栈上构建企业应用程序和内部框架.

我从来没有必要使用除C#之外的任何其他主流高级语言来完成我的任务,因为.NET是我们使用的标准平台.

有一些遗留的Python应用程序我被要求继续支持,我一般都没有接触python和动态语言(尽管我已经完成了一些JavaScript).

我希望得到一些指导/建议来帮助学习如何为静态类型的头脑学习像python这样的语言.

编辑:使用IronPython不是一个选择!

.net c# python dynamic-languages

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

为ASP.NET Web API应用程序生成特定于版本的帮助文档页面

我正在使用WebAPI 版本控制包通过X-Api-Header使用"VersionHeaderVersionedControllerSelector"对我的API进行版本控制.我还使用Microsoft.AspNet.WebApi.HelpPage自动生成API的文档.为了控制versionign工作,他们需要与VersionXYZ进行的命名空间命名空间中的后缀,使"VersionHeaderVersionedControllerSelector"能够将请求路由到像这样的控制器的相应版本:

namespace WEBAPI.Api.Controllers.Version1
{ public class ProductsController : ApiController {} }

namespace WEBAPI.Api.Controllers.Version2
{ public class ProductsController : ApiController {} }
Run Code Online (Sandbox Code Playgroud)

这按预期工作,但是当我看到生成的帮助页面ApiDescription被包括在ID(命名空间中的"VersionXYZ"后缀GETapi/Version1.Products)和RelativePath(API/Version1.Products)性能.理想的情况是什么,我想要做的就是有一个顶层帮助页面刚刚API的版本号和钻探将呈现API即ApiDescription.ID = GETapi /产品和ApiDescription.RelativePath = API /产品的正常方式

有没有办法使用Out of the Box API实现这一点,或者我需要推出自己的ApiExplorer实现

asp.net-web-api asp.net-web-api-routing

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

LINQ除了运算符和对象相等

这是我在使用Except运营商时注意到的一个有趣问题:我有一些用户列表,我想从中排除一些用户:

用户列表来自XML文件:

代码如下:

interface IUser
{
     int ID { get; set; }
     string Name { get; set; }
}

class User: IUser
{

    #region IUser Members

    public int ID
    {
        get;
        set;
    }

    public string Name
    {
        get;
        set;
    }

    #endregion

    public override string ToString()
    {
        return ID + ":" +Name;
    }


    public static IEnumerable<IUser> GetMatchingUsers(IEnumerable<IUser> users)
    {
         IEnumerable<IUser> localList = new List<User>
         {
            new User{ ID=4, Name="James"},
            new User{ ID=5, Name="Tom"}

         }.OfType<IUser>();
         var matches = from u …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

使用Rx处理可观察序列中的错误

如果发生错误,有没有办法让一个可观察的序列继续执行序列中的下一个元素?从这篇文章看起来你需要在Catch()中指定一个新的可观察序列来恢复执行,但是如果你需要继续处理序列中的下一个元素呢?有没有办法实现这个目标?

更新:场景如下:我有一堆我需要处理的元素.处理由一系列步骤组成.我已将这些步骤分解为我想要编写的任务.我按照这里发布的ToObservable()指南 将任务转换为可观察的构图.所以我基本上都是这样做的 -

foreach(element in collection)
{
   var result = from aResult in DoAAsync(element).ToObservable() 
         from bResult in DoBAsync(aResult).ToObservable() 
         from cResult in DoCAsync(bResult).ToObservable() 
         select cResult;
   result.subscribe( register on next and error handlers here)
 }
Run Code Online (Sandbox Code Playgroud)

或者我可以这样:

var result = 
        from element in collection.ToObservable() 
        from aResult in DoAAsync(element).ToObservable() 
         from bResult in DoBAsync(aResult).ToObservable() 
         from cResult in DoCAsync(bResult).ToObservable() 
         select cResult;
Run Code Online (Sandbox Code Playgroud)

这里继续处理其他元素的最佳方法是什么,即使让我们说其中一个元素的处理会引发异常.我希望能够记录错误并理想地继续前进.

reactive-programming system.reactive

12
推荐指数
2
解决办法
5753
查看次数

跨实体数据模型撰写查询

如果模型访问相同的底层数据库,是否有办法从2个不同的实体模型组成查询.

我的方案是:我有一个使用EF进行数据访问的框架.(EDM 1)我有一个客户端应用程序,它使用框架的服务,并使用EF进行自己的数据访问.(EDM2)

在某些情况下,我需要撰写查询并加入跨越2个EDM的实体.

有没有办法在没有从第一个EDM获取内存中的数据然后从第二个EDM的实体在内存中应用其他谓词/连接的情况下执行此操作?

我希望我能以正确的方式阐明这一点

编辑 @Ladislav Mrnka:第一个EDM是可重用框架的数据访问层.将来自此EDM的EF生成实体与消费客户端的实体耦合是没有意义的.如果我这样做,它会破坏API的可重用性并且我必须携带额外的膨胀(客户端的EF元数据和数据库表)每次我想重新部署框架.这也会使设计师在管理模型时变得笨拙.

我目前正在使用你提到的第7项作为解决方案而且性能很糟糕,因为我必须最终返回比使用EDM1的框架所需的更多数据(即实体),然后过滤掉不需要的数据基于基于第二EDM中的实体的属性值的谓词/条件.最终结果是性能下降和DBA不满意.

出于这个原因,我最终将检索实体所需的逻辑推送到SPROC,在该SPROC中,我可以访问EDM使用的表并应用所需的谓词,并使整个查询在DB中运行,而不是将数据存入内存然后过滤掉不必要的.Downside是我不能使用LINQ

你提到的第8项听起来很有意思,但听起来我怀疑你在设计时得到了强烈的打字,或者你呢?你可以在某个地方上传你的代码示例,以便我可以尝试一下吗?

entity-framework entity-framework-4

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

如何在Swashbuckle中替换Swagger UI标题徽标

我正在使用Swashbuckle包用于WebAPI,我正在尝试自定义swagger ui默认页面的外观.我想自定义默认的swagger徽标/标题.我在SwaggerConfig中添加了以下内容

.EnableSwaggerUi(c =>
 {
  c.InjectJavaScript(thisAssembly, 
    typeof(SwaggerConfig).Namespace + ".SwaggerExtensions.custom-js.js");
  }
Run Code Online (Sandbox Code Playgroud)

custom-js.js的内容如下:

$("#logo").replaceWith("<span id=\"test\">test</span>");
Run Code Online (Sandbox Code Playgroud)

这在很大程度上起作用,但是视觉有点刺耳,因为默认的招摇标题在页面加载时是可见的,并且在短暂的延迟之后,jquery下面踢,并且#logo元素的内容被更新

有没有办法避免这种情况,以便jquery作为初始加载/渲染的一部分启动,它看起来无缝?

asp.net-web-api swagger-ui swashbuckle

9
推荐指数
5
解决办法
8220
查看次数