小编Nic*_*Cox的帖子

如何从Web App(节点/ Express)查询本地Dynamics CRM

一直在用几个墙撞到我的头上,所以希望一些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

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

如何防止Nancy从缓存视图

我已经开始在自主模式下测试Nancy了.到目前为止,除了一个令我烦恼的问题之外,还有这么好:我如何防止它在开发过程中缓存我的观点?

我确实注意到一个注释,视图缓存应该在调试模式下被禁用,但它似乎对我不起作用 - 每当我对HTML进行更改时,我都必须重新启动应用程序.

我正在使用Nancy 0.10内置的超级简单视图引擎和.html文件.

c# nancy

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

为什么 PowerShell 的 `Get-ChildItem` 命令将参数 `d` 解析为 `Depth`?

鉴于它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参数具有显式别名add,为什么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)

powershell

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

生成静态文件时,hexo更改文件夹结构

首先,感谢Hexo.这是我的问题:

我设置post_asset_foldertrue了HEXO配置文件中 然后我跑:

$ hexo new first.

然后:

$ ls source/_posts/

first/first.md hello-world.md

我添加了一个名为PIC pic.pngsource/_posts/first,写东西source/_posts/first.md像下面这样:

title: first

date: 2015-06-16 13:42:29

tags:

---

picture blow ^_^

![pic](first/pic.png)
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/.

  1. 文件夹的结构 public/2015/06/16/

    - public/2015/06/16/
        `- first
            `- pic.png
            `- first.md
        `- hello-world
            `-hello-world.md
    
    Run Code Online (Sandbox Code Playgroud)
  2. 文件夹的结构 source/_posts/

    - source/_posts/
        `- first
            `- first
                `pic.png
            `- first.md
        `- …
    Run Code Online (Sandbox Code Playgroud)

directory markdown structure hexo

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

使用 dotnet core 2.0 和 Terraform 管理 AWS Lambda 函数

设置

  • VS代码
  • 地形 (v0.11)

问题

我很难理解如何在 dotnet core 2.0 项目中管理 Lambda 函数

当前方法(没有按照我认为的方式实施)

  • 在 Terraform 中创建函数结构
  • 创建一个DOTNET核心项目的功能代码,描述在这里
  • 压缩发布文件夹并上传到 S3
  • 按照 AWS 文档的 c# (assembly::namespace.class-name::method-name) 在 Terraform 函数定义中引用函数的处理程序

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 核心 CLI 来管理 Lambda 函数而不是 Terraform
  • 使用 dotnet core CLI 部署每个函数 dotnet lambda deploy-function

从 Lambda 代码版本管理的角度来看,这种方法感觉更清晰,但这意味着我不再使用 Terraform 来管理我的 Lambda 函数。 …

.net-core aws-lambda terraform

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

使用HttpContext在目标上的ThreadPool QueueUserWorkItem错误

我有这个类,它触发一个方法并忘记它..唯一的问题是,如果调用的方法有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)

.net c# threadpool

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