DD4T - TridionLinkProvider内で動的リンクの解決が失敗する


7

現在、私はDD4Tソリューション(ローカルで実行中)を実装しようとしており、実装のほとんどの面で多くの成功を収めています。私はTridionからのあらゆるタイプのコンテンツを引き出すページの設定と作業を行っていますが、現在Dynamic Link Resolutionに関してはレンガの壁に当たっています。私のウェブサイトの他の面は、私が試してみたものの、ダイナミックリンクはありません。

の周り私はオンラインで見つけることができましたすべてのソースを読んでたので、私は私がするURLへのアクセスを持っているコンポーネントのTCMを解決する唯一の方法はTridionLinkProviderクラス内ResolveLink方法であると判断しました(これは私のコンパイルDD4T.Providers.SDLTridion2013 DLL内住んでいるが、いつでも、しかし私は、次のサーバーエラーに対して出てくるこの方法を使用してみてください:。

Server Error in '/' Application. 
com.tridion.linking.ComponentLink 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: Java.Lang.Exception: com.tridion.linking.ComponentLink 

Source Error: 

Line 58:     if (!_componentLinks.ContainsKey(uri.PublicationId)) // we must test again, because in the mean time another thread might have added a record to the dictionary! 
Line 59:     { 
Line 60:      _componentLinks.Add(uri.PublicationId, new ComponentLink(uri.PublicationId)); 
Line 61:     } 
Line 62:    }

が調査した、問題はそうですそのためには、Trそのクラス内 DLLをidion.ContentDelivery.Web.Linkingが正しく動作していない - ComponentLinkタイプへのすべての参照を次のエラーを生成し、私は返すようにComponentLinkを作成することができなかっ午前ないことを意味:

ComponentLink = 'ComponentLink' threw an exception of type 'Java.Lang.Exception' 
base {Java.Lang.Throwable} = {java.lang.ClassNotFoundException: com.tridion.linking.ComponentLink}

を何ダイナミックデリバリープレゼンテーションソリューション(どこから私のプロバイダDLLを作成したのか)に入ると、そのリファレンスはそこそこ良いのです! ComponentLinkのタイプを問題なく認識します。だから、ビルド時にその情報を失っているようです。また、 "Tridion.ContentDelivery.Web.Linking"をビューの@usingディレクティブを使って正常に参照することができます。

のフルスタックトレースは次のとおりです。

[Exception: com.tridion.linking.ComponentLink] 
    Codemesh.JuggerNET.JavaClass.ThrowException(Exception ex) +96 
    Codemesh.JuggerNET.NTypeValue.Throw(Int64 inst) +413 
    Codemesh.JuggerNET.JavaClass.ThrowTypedException(Int64 inst) +1373 
    Codemesh.JuggerNET.JavaClass.init() +373 
    Codemesh.JuggerNET.JavaClass.get_JObject() +33 
    Codemesh.JuggerNET.JavaMethod.init() +1115 
    Codemesh.JuggerNET.JavaMethod.get_MethodPtr() +54 
    Codemesh.JuggerNET.JavaMethod.get_Handle() +47 
    Codemesh.JuggerNET.JavaMethod.CallObject(JavaProxy jpo, JavaMethodArguments args) +389 
    Com.Tridion.Linking.ComponentLink..ctor(Int32 publicationId) +191 
    Tridion.ContentDelivery.Web.Linking.ComponentLink..ctor(Int32 publicationId) +58 
    DD4T.Providers.SDLTridion2013.TridionLinkProvider.GetComponentLink(TcmUri uri) in C:\Documents and Settings\jwalters\My Documents\DD4T-New\dotnet\DD4T.Providers.SDLTridion2013\TridionLinkProvider.cs:60 
    DD4T.Providers.SDLTridion2013.TridionLinkProvider.ResolveLink(String sourcePageUri, String componentUri, String excludeComponentTemplateUri) in C:\Documents and Settings\jwalters\My Documents\DD4T-New\dotnet\DD4T.Providers.SDLTridion2013\TridionLinkProvider.cs:82 
    DD4T.Providers.SDLTridion2013.TridionLinkProvider.ResolveLink(String componentUri) in C:\Documents and Settings\jwalters\My Documents\DD4T-New\dotnet\DD4T.Providers.SDLTridion2013\TridionLinkProvider.cs:70 
    DD4T.Factories.LinkFactory.ResolveLink(String componentUri) in C:\Documents and Settings\jwalters\My Documents\DD4T-New\dotnet\DD4T.Factories\LinkFactory.cs:90 
    ASP._Page_Views_Shared_header_cshtml.Execute() in c:\Documents and Settings\jwalters\My Documents\Visual Studio 2010\Projects\New-DD4T\New-DD4T\Your Website\Views\Shared\header.cshtml:52 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +207 
    System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +81 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +88 
    System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +220 
    System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115 
    System.Web.Mvc.HtmlHelper.RenderPartialInternal(String partialViewName, ViewDataDictionary viewData, Object model, TextWriter writer, ViewEngineCollection viewEngineCollection) +279 
    System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData) +113 
    System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName) +31 
    ASP._Page_Views_Shared__MasterPage_cshtml.Execute() in c:\Documents and Settings\jwalters\My Documents\Visual Studio 2010\Projects\New-DD4T\New-DD4T\Your Website\Views\Shared\_MasterPage.cshtml:19 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +207 
    System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +81 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +88 
    System.Web.WebPages.c__DisplayClass7.b__6(TextWriter writer) +102 
    System.Web.WebPages.HelperResult.WriteTo(TextWriter writer) +12 
    System.Web.WebPages.WebPageBase.Write(HelperResult result) +67 
    System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action'1 body) +66 
    System.Web.WebPages.WebPageBase.PopContext() +262 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +95 
    System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +220 
    System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115 
    System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +303 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13 
    System.Web.Mvc.c__DisplayClass1c.b__19() +23 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func'1 continuation) +260 
    System.Web.Mvc.c__DisplayClass1e.b__1b() +19 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList'1 filters, ActionResult actionResult) +177 
    System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343 
    System.Web.Mvc.Controller.ExecuteCore() +116 
    System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 
    System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10 
    System.Web.Mvc.c__DisplayClassb.b__5() +37 
    System.Web.Mvc.Async.c__DisplayClass1.b__0() +21 
    System.Web.Mvc.Async.c__DisplayClass8'1.b__7(IAsyncResult _) +12 
    System.Web.Mvc.Async.WrappedAsyncResult'1.End() +62 
    System.Web.Mvc.c__DisplayClasse.b__d() +50 
    System.Web.Mvc.SecurityUtil.b__0(Action f) +7 
    System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60 
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8862381 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184 

私は日のために、この問題と戦って、私のウィットの終わりにしていますしてきました。私のlibとconfigフォルダは正しいようですが、私のライセンスは問題ありません。そうでなければ何も動かないでしょう。ログオンによるTridionのログ記録は冗長に設定されていても何も表示されません。私はDD4Tの新しいWebサイトソリューションから始めて、自分のProviders DLLを再コンパイルし、参照を試してみました(それらを再追加し、DD4Tの "build"フォルダ内ではなくソリューションフォルダにネイティブに移動するようにDLLを移動していました)。以前はそれらを参照しています)、何もエラーを全く変更しませんでした。

誰かが何らかの指針やアドバイスを提供できれば、非常に感謝しています。私は本当にこれをどのように進めるべきか分かりません。

  0

あなたはlibにcd_link.jarを持っていますか? 2013年のjarファイルですか? 21 6月. 132013-06-21 15:24:54

  0

いいえ、そこにはcd_link.jarはありません - 私はTridion自体がインストールされているサーバー上のどこにでも1つを見つけることができません。そこではすべての/ lib /ファイルを引っ張ってきました。 サーバーでcd_linking.jarが表示されますが、その意味であればcd_linking.jarが表示されますが、そのコピーを行ってもエラーはまったく変更されません。 21 6月. 132013-06-21 15:47:14

+1

エラーは明らかです:com.tridion.linking.ComponentLinkクラスが見つかりません。これは確かにcd_link(ing).jarにあります。 %TRIDION_HOME%\ libの2つの場所、またはWebアプリケーションのホームディレクトリ内のbin \ libフォルダのいずれかにあります。 21 6月. 132013-06-21 18:58:57

6

Quirijnのコメントは問題を修正しましたか?

これを見ると、実際にはそうであるようです。おそらく、正しいAPIライブラリがあなたのウェブサイト/ bin/libフォルダにあるかどうか、あるいは設定されたTRIDION_HOMEの場所から来ているかどうかをチェック/確認することができます。 .NETのコンテンツ配信APIをインストールする

完全なドキュメントは、ここでSDL TridionのコンテンツのWebサイトにあります。http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/task_DFE30215E62D42D097516F0450C853D7

+1

あなたはどちらも私を動かしたようです!実際にはcd_linking.jarを取り巻く問題があるようですが、コアの問題は関連する設定だと思います。「cd_linking.xml」はそこにはありませんでした。ドキュメントへのリンクは非常に役に立ちます。 このエラーは、com.tridion.linking.linkingより「設定されたクラスパスのルートが見つかりません」という報告に移動しました。これはさらにjarの問題を指摘していますか?しかし、それは数日間で初めて移動されました。これは素晴らしいことです! 24 6月. 132013-06-24 10:07:50

  0

すべての作業中 - 正しくURLを取得しています:)ありがとう非常にありがとうございます。 24 6月. 132013-06-24 11:17:33

  0

こんにちはジョン、私はあなたの質問に行きました。私も同様の問題に直面していますが、それはUGCのインプランテーションに関連しています。この問題は下記URLで確認できます。 'http:// tridion.stackexchange.com/questions/14042/error-in-ugc-implementation-in-dd4t-application'にあります。あなたが実装した修正が何だったか教えてくれますか? 03 3月. 162016-03-03 06:43:03