小编Abh*_*tel的帖子

在库代码中提供 API 的同步和异步版本

对于在类库中公开 API 的同步和异步版本,是否有推荐的最佳实践/指南?例如,如果我在类库中定义了以下 2 个方法:

  public Task<string> GetSomeDataAsync()
    {
        //typically an IO operation that would be awaited on, simplified to return a Task for illustration
        return Task<string>.Factory.StartNew( () =>  "foo");
    }

    public string GetSomeDataSync()
    {
        var task = GetSomeDataAsync();
        task.ConfigureAwait(continueOnCapturedContext: false);
        return task.Result;
    }
Run Code Online (Sandbox Code Playgroud)

上面的内容可以托管在 Winform/WPF/Console/ASP.NET 客户端应用程序中。假设任务配置为不捕获任何同步上下文以避免潜在的死锁,客户端使用上面使用 task.Result 的同步版本是否安全

.net c# task-parallel-library

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

什么时候应该在Ninject.MVC3中使用Kernel.BeginBlock()

我正在使用Ninject.MVC3和WebAPI.最初,我正在使用这里概述的NinjectResolverNinjectScope的实现,即使用,我注意到每次调用Controller时都会调用BeginBlock().在对控制器进行负载测试(超过几百次调用)时,我注意到w3wp的内存消耗显着增加(高负载时高达1.4 gigs)并且GC永远不会回收任何内存._kernel.BeginBlock()

根据这篇SO帖子,不应该处理内核并且不应该使用BeginBlock().之后我更新了Resolver和Scope,如下所示:

 public class NinjectScope : IDependencyScope
{
    protected IResolutionRoot resolutionRoot;

    public NinjectScope(IResolutionRoot kernel)
    {
        resolutionRoot = kernel;
    }

    public object GetService(Type serviceType)
    {
        IRequest request = resolutionRoot.CreateRequest(serviceType, null, new Parameter[0], true, true);
        return resolutionRoot.Resolve(request).SingleOrDefault();
    }

    public IEnumerable<object> GetServices(Type serviceType)
    {
        IRequest request = resolutionRoot.CreateRequest(serviceType, null, new Parameter[0], true, true);
        return resolutionRoot.Resolve(request).ToList();
    }

    public void Dispose()
    {
        //Don't dispose the kernel
        //IDisposable disposable = (IDisposable)resolutionRoot;
        //if …
Run Code Online (Sandbox Code Playgroud)

ninject asp.net-mvc-3 asp.net-web-api

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

设置自定义活动的OwnerId

我创建了一个我在工作流程中使用的自定义CRM活动.我将此活动用作自定义工作流活动的InArgument.在Execute()方法中,我试图将自定义CRM活动实例的OwnerId设置为系统用户,并在我使用CrmSvcUtil生成的上下文对象上调用UpdateObject(实体).

[Input("Some name")]
[ReferenceEntity("mycustomactivity")]
[Required]
public InArgument<EntityReference> MyCustomActivity{get;set;}


void Execute(CodeActivityContext context)
{
IOrganizationService svc = context.GetExtension<IOrganizationService>();
var customActivityReference = MyCustomActivity.GetValue(MyCustomActivity);

//MyServiceContext is an OrganizationServiceContext generated using CrmSvcUtil
MyServiceContext servicecontext = new MyServiceContext(svc); 

//GetCutomActivityInstance uses the Id to get an instance of the custom activity) 
MyCustomCRMActivity activityInstance = GetCutomActivityInstance (servicecontext,customActivityReference.Id);

activityInstance.OwnerId = new EntityReference("systemuser",<SomeGUID>);
context.UpdateObject(activityInstance);
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

以上操作不起作用,活动所有者默认为我的crm用户帐户,并且未更新以反映我在activityInstance.OwnerId中设置的所有者

任何帮助将非常感激.

dynamics-crm-2011

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

为WCF服务添加多个HTTP基地址

我在IIS 7.5中设置了一个MSCRM网站,其中我在绑定下配置了以下主机头:1)crm 2)crm.mydomain.com

我正在尝试访问OrganizationData.svc.我已配置将以下内容添加到CRMWeb应用程序的Web.config中

   <serviceHostingEnvironment>   
    <baseAddressPrefixFilters>   
       <add prefix="http://crm/"/>   
   </baseAddressPrefixFilters>   
  </serviceHostingEnvironment>
Run Code Online (Sandbox Code Playgroud)

如果我使用以下URL访问服务,则此方法有效:http://crm/MSCRMDEV/XRMServices/2011/OrganizationData.svc/ 但如果我使用FQDN http://crm.mydomain.com/MSCRMDEV/它不起作用XRMServices/2011/OrganizationData.svc /

我尝试在配置中添加" http://crm.mydomain.com/ "作为另一个前缀,就在我为" http:// crm / " 添加的条目下面,但是WCF会抛出以下错误:

此集合已包含方案http的地址.此集合中每个方案最多只能有一个地址.如果您的服务是在IIS中托管的,则可以通过将'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled'设置为true或指定'system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters'来解决问题.

我按照这里的建议添加了multiplesitebindings ="true",但这也没有帮助.我也查看了这个消息,但CRM Web应用程序的Web.config中没有节点,所以不确定我是否可以添加此部分

这可以实现吗?从我所看到的WCF有问题使用多个http主机头(在IIS绑定中添加).

wcf dynamics-crm-2011

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

一个语句中的多个绑定表达式

WPF是否在一个语句中支持多个绑定表达式?以下内容:

 <TextBlock Text="{Binding Path=OrderID} shipped on {Binding Path=OrderDate}"/>
Run Code Online (Sandbox Code Playgroud)

我猜它确实如此,但我认为我没有正确的语法.

wpf

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

设置关于工作流中的电子邮件活动字段到主实体

有没有办法将工作流中的"发送电子邮件"活动中的电子邮件的"关联"字段设置为工作流的主要实体?

我尝试使用表单助手,但它不允许我将工作流的主要实体绑定到电子邮件的"关注"字段.

有没有办法实现这个目标?

dynamics-crm-2011

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