我正在使用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) 我有一个.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) 我正在尝试从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月发行以来,其连接器停止工作,并出现相同的错误。
我有以下类型的工厂:
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找到每一次,试图传递一个IJobType1到Worker2(反之亦然),它抛出一个异常
我已经查看了类型化的工厂组件选择器,但我无法弄清楚如何将其用于预期的效果
这是可能的,还是尝试为我的工人类使用通用接口更好?
编辑:
尝试使用通用接口但似乎没有给我我正在寻找的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
我有一个 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”处理程序永远不会被调用。知道为什么吗?
.net ×1
ajax ×1
asp.net-core ×1
aurelia ×1
automapper-2 ×1
c# ×1
cookies ×1
csla ×1
odata ×1
powerapps ×1
typescript ×1