0

在@JamesWood从这个问题链接到的MSDN 文章中,有这段代码段落(此处转述)用于获取服务器的名称。

function getServerUrl(){
  var serverUrl = this.context().getServerUrl()
  if (serverUrl.match(/\/$/)) {
    serverUrl = serverUrl.substring(0, serverUrl.length - 1);
  }
  return serverUrl;
}

我不是 JS 也不是 RegEx 专家,但在我看来,有可能会在 URL 末尾多余地添加斜杠字符,我们需要处理这个问题。

但是,为上述问题提供的所有答案似乎都忽略了该问题。响应者是否错过了这一点,或者代码保护性太强,可以放松控制吗?

4

3 回答 3

1

正则表达式和子字符串处理这个问题。查看这篇解释 getServerUrl 工作原理的文章。

于 2012-12-11T23:51:38.173 回答
1

MSDN 文章中的代码是为了满足 CRM On-Premise 和 CRM Online 之间的差异。
在 CRM On-Premise(实际上是合作伙伴托管)中,我使用

var orgdata = Xrm.Page.context.getServerUrl() +
  "XRMServices/2011/OrganizationData.svc"

Xrm.Page.context.getServerUrl()返回带有 / 附加的 URL,如果您要使用OrganizationData ,这会更方便。

我不知道 CRM Online 如何返回服务器 URL,但如果您知道您的代码将位于 CRM On-Premise 中,那么我建议不要使用正则表达式和模式匹配。

于 2012-12-12T04:40:56.397 回答
0

据我所知,在最后的斜线方面,在线和本地解决方案没有区别。我的解释是,它要么是一些旧设置的遗留物,要么是一种比抱歉更安全的方法。

我从来没有使用过它,而且我对额外的斜线没有任何问题。也许对于联合解决方案......

我的建议是你跳过它,但你也要记住它做一个心理笔记。如果会有一些与策略 URL 相关的问题,可能需要检查。

于 2012-12-12T21:43:18.500 回答