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 オンプレミスに置かれることがわかっている場合は、正規表現とパターン マッチングを使用しないことをお勧めします。

于 2012-12-12T04:40:56.397 に答える
0

私が見た限りでは、最後のスラッシュに関しては、オンライン ソリューションとオンプレミス ソリューションに違いはありません。私の説明は、それは古いセットアップの残り物か、そうである可能性が高い、申し訳ありませんがより安全なアプローチのいずれかであるということです.

私はそれを使用したことがなく、余分なスラッシュに問題はありませんでした。多分フェデレーションソリューションの場合...

私の提案は、それをスキップすることですが、心に留めておくこともお勧めします。ストレージ URL に関連する問題が発生する場合は、確認する必要があります。

于 2012-12-12T21:43:18.500 に答える