一直在用几个墙撞到我的头上,所以希望一些CRM/Dynamics专家可以帮我一臂之力!
我正在尝试以编程方式从我们的Dynamics CRM实例中获取数据,在Node支持的Express应用程序中使用一组管理凭据.此Express应用程序托管在托管CRM的网络之外的单独服务器上.然后,应用程序将请求,处理并将CRM数据提供给任何已访问的用户(由应用程序中的角色/权限控制),这意味着最终用户只需登录Express应用程序,而无需登录通过ADFS,以便应用程序访问CRM实例.
我们的CRM设置是一个配置为面向互联网(IFD)的内部部署服务器.这使用Active Directory联合身份验证服务.我们的Web应用程序代理服务器在网络的外围运行联合服务,与内部网络上的ADFS服务器进行通信.ADFS对从网络外部(从Internet)连接到内部AD的用户进行身份验证.经过身份验证后,代理允许用户连接到CRM.
我们的本地活动目录与Azure AD同步,因为我们有混合部署.任何O365服务(在线交换,共享点等)都在后台使用Azure AD.我们同步Active目录,因此我们只需要在一个地方管理用户.
CRM有一个端点,例如https://my.crm.endpoint,我在Azure门户中注册了一个应用程序(称为CRM App),主页设置为CRM端点https://my.crm.endpoint.
问题是否将应用程序的主页设置为https://my.crm.endpoint足以将其"链接"到我们的内部CRM实例?
我编写了一个脚本(crm.js),它使用它的应用程序ID 成功请求在Azure门户中注册的CRM应用程序的访问令牌.
示例令牌
eyJ0dWNyIjoiMSIsImlkcCI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzE5ZTk1...
Run Code Online (Sandbox Code Playgroud)
然后,我使用持票令牌尝试通过通常的端点从Dynamics获取一些联系人:https://my.crm.endpoint/api/data/v8.2/contacts?$ select = fullname,contactid
这失败了,我收到一条401 Unauthorised错误消息.
问题任何人都可以建议问题是什么?和/或提供有关如何连接Web应用程序(在我的案例中为Express)的详细信息,以便对使用ADFS的内部部署服务器(IFD)上运行的Dynamics CRM进行身份验证请求?
crm.js
let util = require('util');
let request = require("request");
let test = {
username: '<my.email@address.com>',
password: '<my_password>',
app_id: '<app_id>',
secret: '<secret>',
authenticate_url: 'https://login.microsoftonline.com/<tenant_id>/oauth2/token',
crm_url: 'https://<my.crm.endpoint>'
};
function CRM() { }
CRM.prototype.authenticate = function () {
return new Promise((resolve, reject) => { …Run Code Online (Sandbox Code Playgroud) microsoft-dynamics adfs dynamics-crm node.js azure-active-directory
我已经开始在自主模式下测试Nancy了.到目前为止,除了一个令我烦恼的问题之外,还有这么好:我如何防止它在开发过程中缓存我的观点?
我确实注意到一个注释,视图缓存应该在调试模式下被禁用,但它似乎对我不起作用 - 每当我对HTML进行更改时,我都必须重新启动应用程序.
我正在使用Nancy 0.10内置的超级简单视图引擎和.html文件.
鉴于它Get-ChildItem具有三个以字符开头的参数D......
? (gcm Get-ChildItem).Parameters.Values |? Name -like 'd*' | select name, aliases
Name Aliases
---- -------
Depth {}
Debug {db}
Directory {ad, d}
Run Code Online (Sandbox Code Playgroud)
...并且该Directory参数具有显式别名ad和d,为什么Get-ChildItem -d解析为Get-ChildItem -Depth?
? Get-ChildItem -d
Get-ChildItem: Missing an argument for parameter 'Depth'. Specify a parameter of type 'System.UInt32' and try again.
Run Code Online (Sandbox Code Playgroud) 首先,感谢Hexo.这是我的问题:
我设置post_asset_folder到true了HEXO配置文件中 然后我跑:
$ hexo new first.
然后:
$ ls source/_posts/
first/first.md hello-world.md
我添加了一个名为PIC pic.png成source/_posts/first,写东西source/_posts/first.md像下面这样:
title: first
date: 2015-06-16 13:42:29
tags:
---
picture blow ^_^

Run Code Online (Sandbox Code Playgroud)
然后:
$ hexo g
$ hexo s
我打开了http://0.0.0.0:4000/,但我看不到内容pic.png.
我检查了文件夹public/2015/06/16/first/.我发现文件夹public/2015/06/16/和文件夹之间存在一些差异source/_posts/.
文件夹的结构 public/2015/06/16/
- public/2015/06/16/
`- first
`- pic.png
`- first.md
`- hello-world
`-hello-world.md
Run Code Online (Sandbox Code Playgroud)文件夹的结构 source/_posts/
- source/_posts/
`- first
`- first
`pic.png
`- first.md
`- …Run Code Online (Sandbox Code Playgroud)设置
问题
我很难理解如何在 dotnet core 2.0 项目中管理 Lambda 函数
当前方法(没有按照我认为的方式实施)
Terraform Lambda 函数示例
resource "aws_lambda_function" "this" {
function_name = "test_function"
role = "lambda_exec_role"
s3_bucket = "my_bucket"
s3_key = "object_key/package.zip"
handler = "MyApp::Example.Hello::MyHandler"
runtime = "dotnetcore2.0"
}
Run Code Online (Sandbox Code Playgroud)
这种方法意味着,如果我更改项目中的单个函数,我必须将整个代码库上传到 S3,这不是处理代码更改的干净方式。
替代方法
dotnet lambda deploy-function从 Lambda 代码版本管理的角度来看,这种方法感觉更清晰,但这意味着我不再使用 Terraform 来管理我的 Lambda 函数。 …
我有这个类,它触发一个方法并忘记它..唯一的问题是,如果调用的方法有HttpContext它抛出NullReferenceException.
我的理由是我不能Httpcontext在里面使用,ThreadPool.QueueUserWorkItem(dynamicInvokeShim, new TargetInfo(d, args));因为我得到的NullReferenceException 是它的工作吗?
方法Httpcontext:
public static DataTable GetDataTable(string name)
{
return (DataTable)HttpContext.Current.Cache[name];
}
Run Code Online (Sandbox Code Playgroud)
触发并忘记方法的方法:
using System;
using System.Threading;
namespace XGen.Kuapo.BLL
{
public class AsyncHelper
{
class TargetInfo
{
internal TargetInfo(Delegate d, object[] args)
{
Target = d;
Args = args;
}
internal readonly Delegate Target;
internal readonly object[] Args;
}
private static WaitCallback dynamicInvokeShim = new WaitCallback(DynamicInvokeShim);
public static void FireAndForget(Delegate d, params object[] args)
{ …Run Code Online (Sandbox Code Playgroud) c# ×2
.net ×1
.net-core ×1
adfs ×1
aws-lambda ×1
directory ×1
dynamics-crm ×1
hexo ×1
markdown ×1
nancy ×1
node.js ×1
powershell ×1
structure ×1
terraform ×1
threadpool ×1