小编Cha*_*leh的帖子

使用Automapper导致堆栈溢出的循环引用

我正在使用Automapper将我的NHibernate代理对象(DTO)映射到我的CSLA业务对象

我正在使用Fluent NHibernate来创建映射 - 这很好用

Order遇到的问题是它有一个集合,OrderLines每个都有一个参考Order.

public class OrderMapping : ClassMap<OrderDTO>
{
    public OrderMapping()
    {
        // Standard properties
        Id(x => x.OrderId);
        Map(x => x.OrderDate);
        Map(x => x.Address);

        HasMany<OrderLineDTO>(x => x.OrderLines).KeyColumn("OrderId").Inverse();

        Table("`Order`");
    }
}

public class OrderDTO
{
    // Standard properties
    public virtual int OrderId { get; set; }
    public virtual DateTime OrderDate { get; set; }
    public virtual string Address { get; set; }

    // Child collection properties
    public virtual IList<OrderLineDTO> OrderLines { get; …
Run Code Online (Sandbox Code Playgroud)

c# csla circular-reference automapper-2

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

使用AJAX时的神秘401挑战

我有一个.NET Core网络应用托管在网上。

我正在通过cookie使用基于声明的身份验证:

登录成功后...

var principal = new ClaimsPrincipal();
var id = new ClaimsIdentity(user);
id.AddClaim(new Claim("ViewData", "Allowed"));
id.AddClaim(new Claim("TenantId", user.TenantId));
principal.AddIdentity(id);
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);
Run Code Online (Sandbox Code Playgroud)

这对于除一个用户之外的每个用户都可以正常工作-但是,当该特定用户(第三方)与特定页面(每隔一页)进行交互时,正在浏览器(他们尝试了几次)中遇到身份验证弹出式窗口工作正常。

这使我相信问题是环境方面的,但是我想了解这里可能发生的情况。

有问题的页面与其他页面之间的唯一区别是,该页面向控制器执行AJAX发布以保存一些数据。所述Home控制器需要AUTH到视图(或编辑)的数据。

[Authorize(Policy = "ViewData")]

Ajax是您的标准资料

剃刀:

$.ajax({
  type: 'POST',
  url: '@Url.Action("_Save", "Home")',
  dataType: 'json',
  contentType: 'application/json',
  data: ko.toJSON(viewModel.model()),
  success: function (result) {
  //... callback code etc
Run Code Online (Sandbox Code Playgroud)

检查渲染的JS表明AJAX调用是相对于当前页面的,因此不会进入一些奇怪的URL

原始JS:

$.ajax({
  type: 'POST',
  url: '/Home/_Save',
  dataType: 'json',
  contentType: 'application/json',
  data: ko.toJSON(viewModel.model()), // ... etc
Run Code Online (Sandbox Code Playgroud)

在浏览器中查看时,我可以看到Cookie包含在标题中:

accept: application/json, text/javascript, */*; q=0.01
accept-encoding: gzip, deflate, br …
Run Code Online (Sandbox Code Playgroud)

authentication cookies ajax asp.net-core

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

PowerApps自定义连接器在应用程序构建器中返回404

我正在尝试从PowerApps创建到外部OData API的连接。

我已经通过Postman集合创建了一个自定义连接器-该自定义连接器在测试模式下似乎可以正常工作,但是一旦我尝试在PowerApp中使用它,我总是在表达式编辑器中弹出404错误。

检查对https://europe-001.azure-apim.net/invoke发出的POST请求,并通过Postman用所有标头重新播放它,将导致相同的404错误:

{
    "statusCode": 404,
    "message": "Resource not found"
}
Run Code Online (Sandbox Code Playgroud)

在PowerApps Swagger编辑器中测试API会返回结果,但不是发送到上述URL的POST,在URL中使用API​​端点地址发送标头,而是使用GET。

如果我使用相同的标头等重播此GET请求,则会得到相同的404。每个请求唯一更改的是,x-ms-client-request-id因此我认为这是为了防止XHR重播。

我是否缺少针对自定义连接器的发布步骤?

有人有这样的工作吗?

编辑:

有趣的是-我在上使用基本API进行了尝试,jsonplaceholder.typicode.com并且可以正常工作。该API不需要身份验证,并且可以毫无问题地将数据返回到我的Powerapp。

除了身份验证机制外,我不确定为什么这与其他自定义连接器不同。

编辑编辑:

这可能是PowerApps中的错误-MS支持正在为我调查该错误,另一个用户表示自10月发行以来,其连接器停止工作,并出现相同的错误。

odata powerapps

6
推荐指数
0
解决办法
136
查看次数

Windsor TypedFactoryFacility,根据参数类型选择组件

我有以下类型的工厂:

public interface IWorkerFactory
{
    IWorker Create(IJob job);

    void Release(IWorker handler);
}
Run Code Online (Sandbox Code Playgroud)

这家工厂为特定工作创造了工人.所有工作都实现了,IJob但我想要一些处理不同类型工作的组件:

例如,这两者都来源于 IJob

interface IJobType1 : IJob { }

interface IJobType2 : IJob { }
Run Code Online (Sandbox Code Playgroud)

我想要两种工人类型,一种处理每种类型 IJob

class Worker1 : IWorker
{
    public Worker1(IJobType1 job) { }
}

class Worker2 : IWorker
{
    public Worker2(IJobType2 job) { }
}
Run Code Online (Sandbox Code Playgroud)

我已经试过这一点,但只是温莎拿起第一个实现的IWorker找到每一次,试图传递一个IJobType1Worker2(反之亦然),它抛出一个异常

我已经查看了类型化的工厂组件选择器,但我无法弄清楚如何将其用于预期的效果

这是可能的,还是尝试为我的工人类使用通用接口更好?

编辑:

尝试使用通用接口但似乎没有给我我正在寻找的API ...关键问题是我真的不想知道它是什么类型IJob但我想要最合适的IWorker实例是在解决时创建.

我这样称呼它:

public void ProcessItem(IJob job)
{
    IProcessingExceptionLog exLog = null;
    IWorker …
Run Code Online (Sandbox Code Playgroud)

.net castle-windsor inversion-of-control typed-factory-facility

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

更改集合时不会触发 Aurelia CollectionObserver 处理程序

我有一个 Aurelia 组件,它只是应该显示项目列表。组件的模型有一个可绑定的“items”属性:

@bindable items = [];
Run Code Online (Sandbox Code Playgroud)

组件模板使用简单的重复属性显示列表:

 <div repeat.for="item of items">  
    ${item.id}   </div>
Run Code Online (Sandbox Code Playgroud)

当我从使用该组件的页面视图模型中将新项目推送到绑定数组中时,我可以看到在刷新列表并出现新项目时添加了该项目。我的问题是,当修改“items”数组时,我需要执行其他操作,因此我尝试将 collectionObserver 添加到组件中,如下所示:

import {BindingEngine, inject} from 'aurelia-framework';

@inject(BindingEngine) 
export class GridControl {   

  @bindable items = [];

  constructor(bindingEngine) {
    this.items = []; 
    let subscription = bindingEngine.collectionObserver(this.items)
                                    .subscribe(this.listChanged);   
  }

  listChanged(splices) {
    // do some stuff   
  } 
}
Run Code Online (Sandbox Code Playgroud)

但是我的“listChanged”处理程序永远不会被调用。知道为什么吗?

web-component typescript aurelia

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