2012-04-03 5 views
4

GUI拡張で動作するようにデータモデルを作成しようとしていますが、文字列を返す単純なサービスを作成しました。私はmodel.configを設定し、私は次のエラーを取得ブラウザで直接このサービスを実行しようとすると、私のweb.configファイルにモデルでWebサービスを作成中にエラーが発生しました

<services> 
    <service name="CMSExtensions.Model.Services.PublicationInfo" behaviorConfiguration="Tridion.Web.UI.ContentManager.WebServices.DeveloperBehavior"> 
     <endpoint name="PublicationInfo" address="" behaviorConfiguration="Tridion.Web.UI.ContentManager.WebServices.AspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="Tridion.Web.UI.ContentManager.WebServices.WebHttpBindingConfig" contract="CMSExtensions.Model.Services.PublicationInfo"/> 
    </service>  
</services> 

を次のエントリを追加しました:

パーサーエラーメッセージ:あり'Tridion.Web.UI.ContentManager.WebServices.DeveloperBehavior'という名前のサービス動作はありません。

と私はGUIでJSを経由して、それを起動しようとすると、私はこのエラーを取得:

Uncaught TypeError: Cannot call method 'GetPublicationData' of undefined 
CMSExtensions.Popups.PublicationInfo._onExecuteButtonClickedPublicationInfo_v6.0.0.39607.0_.aspx:433 
(anonymous function)PublicationInfo_v6.0.0.39607.0_.aspx:2 
EventRegister.f.executeListenerPublicationInfo_v6.0.0.39607.0_.aspx:16 
aPublicationInfo_v6.0.0.39607.0_.aspx:16 
Tridion.ObjectWithEvents.processHandlersPublicationInfo_v6.0.0.39607.0_.aspx:14 
Tridion.ObjectWithEvents.fireEventPublicationInfo_v6.0.0.39607.0_.aspx:14 
Tridion.Controls.Button.onclickPublicationInfo_v6.0.0.39607.0_.aspx:428 
Tridion.Controls.Button.onmouseupPublicationInfo_v6.0.0.39607.0_.aspx:428 
(anonymous function)PublicationInfo_v6.0.0.39607.0_.aspx:2 
EventRegister.f.executeListenerPublicationInfo_v6.0.0.39607.0_.aspx:16 
a 

私はSDL Tridionの2011(SP1なし)を使用しています。あなたが正しくあなたのモデルの設定でカスタムWebサービスが含まれている場合

<serviceBehaviors> 
     <behavior> 
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
      <serviceMetadata httpGetEnabled="true"/> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="CMSExtensions.Model.Services.PublicationInfo" behaviorConfiguration="Tridion.Web.UI.ContentManager.WebServices.DeveloperBehavior"> 
     <endpoint name="PublicationInfo" address="" behaviorConfiguration="Tridion.Web.UI.ContentManager.WebServices.AspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="Tridion.Web.UI.ContentManager.WebServices.WebHttpBindingConfig" contract="CMSExtensions.Model.Services.PublicationInfo"/> 
     </service>  
    </services> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
+0

ウェブサービスコードとコマンドのJavaScriptも共有できますか?それらがなければ、ここで何がうまくいかないのか分かりにくいです。 –

+0

@FrankvanPuffelen - コードスニペットを追加しました。 – sachspeak

+0

あなたはその設定のインデントを修正していただけますか?あなたはどんなテキストエディタでもそれを行うことができ、そしてそれはそれを誰もがもっと読めるようにします。 –

答えて

2

<cfg:groups> 
      <cfg:group name="CMSExtensions.Model.Services" merger="Tridion.Web.UI.Core.Configuration.Resources.DomainModelProcessor" merge="always"> 
       <cfg:domainmodel name="CMSExtensions.Model.Services"> 
        <cfg:fileset> 
         <!-- <cfg:file type="script">/Scripts/Constants.js</cfg:file> --> 
        </cfg:fileset> 

        <cfg:services>      
         <cfg:service type="wcf">/Services/PublicationInfo.svc</cfg:service> 
        </cfg:services> 
       </cfg:domainmodel> 
      </cfg:group> 
     </cfg:groups> 

Web.configファイルエントリ:ここ

は、サービスコード

using System.Collections.Generic; 
using System.Linq; 
using System.ServiceModel; 
using System.ServiceModel.Activation; 
using System.ServiceModel.Web; 
using CMSExtensions.Model.Progress; 
using Tridion.Web.UI.Models.TCM54; 


namespace CMSExtensions.Model.Services 
{ 

    [ServiceContract(Namespace = "http://CMSExtensions.Model.Services", Name = "PublicationInfo")] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 

    public class PublicationInfo : WCFServiceBase 
    { 
     [OperationContract] 
     [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, 
         ResponseFormat = WebMessageFormat.Json)] 
     public string GetUserDescription() 
     { 
      return "sachin"; 
     } 
    } 
} 

モデルconfigですファイルはあなたのサービスを呼び出すためのJavaScriptプロキシを生成します。生成されたJavaScriptコードは、ブラウザのデバッグツールにあるDefault.aspx?mode = jsファイルにあります。

JavaScriptプロキシがない場合は、System.configの更新番号を増やしてください。これを行ってもプロキシが表示されない場合は、生成されたJavaScriptとエラーメッセージのイベントログを確認してください。

4

Tridion.Web.UI.ContentManager.WebServices.DeveloperBehaviorは、WebRootディレクトリのweb.configファイルで定義されています。だからあなたはこれを別のアプリケーション(プール)で実行しようとしている可能性が高いです。

あなたのモデルとエディタがアプリケーションではなく仮想ディレクトリのIISであることを確認することをお勧めします。

+0

WebアプリケーションではなくVdirとしてセットアップされます。 – sachspeak

+0

それは非常に奇妙です。それはそれを継承するはずです。独自のweb.configに動作をコピーしてみましたか? –

関連する問題