0

CRM 4.0 では、ダイナミック コンテンツ (aspx) を CRM の ISV フォルダーに配置し、個別のアプリケーションを作成できましたが、セキュリティと CRM への相対 URL を使用していました。たとえば、相対 URL を使用してアカウントのカスタム 360 ビューを iframe にリンクできました。の線に沿って

/ISV/CrmMvcApp/Account.aspx/Overview?id=....

CRM 2011 では、ISV フォルダーの使用は推奨されておらず、Microsoft は、サポートされている方法でこれを行うように移行する方法についていくつかのガイドラインを用意しています ( MSDN gg309571: ISV フォルダーのコードを Microsoft Dynamics CRM 2011 にアップグレードします)。彼らが言うには:

Web リソース機能では満足できないシナリオでは、独自の web.config を使用して独自のアプリケーション プールに Web アプリケーションを作成します。

私がこれを読んでいる方法 (サポートされている/サポートされていないガイドラインと合わせて) は、標準の CRM アプリの下に仮想ディレクトリなどを追加することは許可されていないため、IIS に独自のバインドを持つ別の Web サイトが必要であるということです。これは残念なことであり、カスタマイズとサイトマップで相対パス/URL を使用できません。これは特に、DEV、TEST、PROD からソリューションをエクスポートおよびインポートする場合に厄介です。

  • 私の仮定は間違っていますか?
  • どういうわけか相対パスを持つことはできますか?
  • 環境ごとにサイトマップやカスタマイズの変更を行わずに、外部コンテンツを持つ実用的で簡単な方法を見つけた人はいますか?

編集:これはサポートされていない変更のリストにも記載されているため、ガイドラインの私の理解が正しいことを他の情報源で確認しました。仮想フォルダーと Web アプリは、既定の CRM Web サイトから完全に分離された状態に保たれます。

VDir 用の Microsoft Dynamics CRM Web サイト内、特に ISV フォルダー内でのインターネット インフォメーション サービス (IIS) アプリケーションの作成はサポートされていません。

MSDN gg328350: サポートされていないカスタマイズ

4

3 に答える 3

1

主にCRMデータ/レコードにアクセスする必要がある場合は、jScriptWebリソースの使用を確認してください。REST ODataサービスを使用して、「ほとんどの」CRUD操作を実行できます。JQueryを使用してJSONを解析する場合、非常に生産的です。

于 2012-07-03T23:57:52.037 に答える
1

クライアントの実行を必要とせず、環境の詳細(サーバー名、ポート)を一度だけ構成する必要がなく、javascriptリダイレクトによく似たソリューションを見つけました。追加のロジックを簡単に追加できます。

このソリューションは、カスタマイズへの依存関係を作成しますが、環境のようなものではなく、アンマネージド ソリューションとマネージド ソリューションに使用できます。

解決策は、ファイルRedirect.aspxを ISV フォルダーに配置することでした。コードは CRM とはまったくやり取りせず、サポートされているガイドラインの範囲内ですが、ISV フォルダーは Microsoft によって廃止されているため、このソリューションは将来の証明にはなりません。

Redirect.aspx渡されたパラメーターを自動的に渡すため、エンティティ識別子などの有無にかかわらず機能します。

使用法:

  • CRM アプリ サーバーの ISV フォルダーにファイルを配置します。
  • 現在の環境に合わせてサーバー名とポートを変更します (環境ごとに行う必要があります)。
  • iframe などのカスタマイズでは、以下をソースとして使用します。

    /ISV/Redirect.aspx?redirect=http://SERVERREPLACE/CustomMvcApp/SomeControllerAction
    

内容はこちらRedirect.aspx

<%@ Page Language="C#" %>    
<html>
<script runat="server">
  protected override void OnLoad(EventArgs e)
  {
      // must be customized for each environment
      const string ServerBaseName = "appserver1:60001"; 
      const string UrlParameterName = "redirect";
      const string ReplacePattern = "SERVERREPLACE";

      var parameterUrl = Request.Params[UrlParameterName].Replace(ReplacePattern, ServerBaseName);

      var queryStringBuilder = new StringBuilder();

      foreach (var key in Request.QueryString.AllKeys)
      {
          if (key == UrlParameterName)
          {
              continue;
          }

          queryStringBuilder.Append(!(queryStringBuilder.Length > 0) ? "?" : "&");
          queryStringBuilder.Append(key + "=" + Request.QueryString[key]);
      }

      var completeRedirectString = parameterUrl + queryStringBuilder;

      Response.Redirect(completeRedirectString);
  }   
</script>
<head>
    <title>Redirecting</title>
</head>
</html>
于 2012-07-11T08:27:15.537 に答える
0

あなたの質問によると「相対URL」ではありませんが、私が使用する解決策は、構成エンティティに「スタブ」または「ルート」URLを保存し、実行時にJScriptでそれらのレコードを読み取って、カスタムリンクの完全修飾宛先を決定することです。

于 2012-07-02T11:42:09.973 に答える