3

외부 콘텐츠 형식을 사용하여 Sharepoint 2010과 Microsoft Dynamics Nav 2009 R2 (Navision)를 통합하려고합니다. 저는 Dynamics Nav와 Sharepoint 2010의 Buisness Connectivity Service에 매우 익숙하며 작동하도록 할 수 없습니다.BCS를 사용하여 Sharepoint 2010과 Microsoft Dynamics Nav (Navision) 통합

Dynamics Nav에 웹 서비스로 페이지를 게시 할 수 있고 데모 페이지 중 하나를 웹 서비스로 게시했으며 Visual Studio를 사용하여 데모 페이지에 성공적으로 연결했습니다 (웹 참조로 추가). 프로그래밍 방식으로 추가 및 삭제 메서드를 호출하고 잘 작동했습니다.

셰어 포인트 디자이너를 열었으며 외부 콘텐츠 형식을 추가하려고했습니다. "WCF Service"로 "Data Source Type"을 설정하고 "Service Metadata Url"과 "Service EndPoint Url"둘 다에서 웹 서비스 (http : // devel : 7047/DynamicsNAV/WS/Page/Customer) ". 웹 서비스에 연결하려고하면 "일치하는 끝점 구성을 찾을 수 없습니다."라는 오류 메시지가 나타납니다.

앞서 말했듯이 SharePoint의 Microsoft Dynamics Nav 및 외부 콘텐츠 형식 모두에 대해 매우 새로 습득했습니다. Dynamics Nav와 Sharepoint 통합에 대한 정보는 찾기가 어렵고 조금 잃어버린 느낌입니다. BCS를 사용하여 Dynamics Nav를 SharePoint와 통합하는 방법에 대해 밝혀 줄 수 있다면 정말 감사하겠습니다.

답변

1

NAV 웹 서비스에 대해 알고있는 동안 나는 Sharepoint와 BCS에 대해 아무 것도 모른다는 것을 알기 때문에 나를 용서해야 할 것입니다.

그러나 내가 말했듯이, 도움이 될만한 몇 가지 조언이 있습니다. 무엇보다도 NAV 웹 서비스는 WCF를 기반으로하며 BasicHttpBinding을 사용합니다. WCF BasicHttpBinding 서비스를 BCS에 연결하는 방법에 대한 몇 가지 조사를 수행하면 몇 가지 견인이있을 수 있습니다. 표준 BasicHttpBinding 서비스와 NAV 특정 웹 서비스 간에는 근본적인 차이점이 없습니다.

또한 웹 참조를 사용하여 Visual Studio의 NAV 웹 서비스에 성공적으로 연결할 수 있다고 언급했습니다. 그러나 웹 참조 프록시는 이전의 "wsdl.exe"유틸리티를 사용하여 작성되므로 기존 SOAP 웹 서비스에서만 작동 할 수 있습니다. BasicHttpBinding 서비스는 SOAP 웹 서비스와 완벽하게 호환되지만 모든 WCF 서비스에 고유 한 구성 설정 누락 문제가 여전히 있습니다. Visual Studio에서 서비스 참조를 사용하고 게시 된 NAV 웹 서비스에서 올바르게 작동하도록하는 방법을 생각해보십시오. 이를 통해 생성 된 구성 설정을 사용하여 SharePoint Designer에서 누락 된 부분을 이해할 수 있습니다. 내 생각 엔 WCF 프록시를 사용하여 NAV 웹 서비스에 연결할 수 있기 전에 셰이프 디자이너에서 WCF 관련 설정이 필요하다는 단어가 누락 된 "끝점 구성"오류입니다. WCF는 고전 SOAP보다 훨씬 세분화 된 수준의 제어를 제공하기 때문에 보안 영역에있을 수 있습니다. 다시 생각해 보면, 셰어 포인트가 제대로 구성된 WCF 끝점을 필요로한다는 것을 기억하는 것입니다. 구식 웹 참조는 그렇지 않습니다. 그래서 아마 셰어 디자이너가 아닌 Visual Studio에서 작업 할 수 있습니다.

NAV 프로젝트에서 서비스 참조 프록시를 만들 때 나는 지나치게 자세한 파일 기반 대신 코드 기반 구성을 사용하려고 시도합니다 ("모범 사례"의 교훈은 아닙니다). 구성 (특히 NAV 서비스 티어 엔드 포인트 바인딩을 제어 할 수 없으므로). 클라이언트 연결을 만드는 데 이와 비슷한 코드를 사용합니다. 물론 이것은 의사 코드이며 컴파일되지 않습니다. 예를 들어 실제 서비스 참조 클라이언트 프록시 클래스를 가리켜 야 할 필요가 있습니다.하지만 이것은 아이디어를 줄 것입니다. 어떤 WCF 바인딩 구성 매개 변수가 필요합니다) :

using System.Security.Principal; 
    using System.ServiceModel; 

    private void TestNavConnection(string url) 
    { 
     using (var ws = new NavServiceReference(GetBindingTransportCredentialOnly(), new EndpointAddress(url))) 
     { 
      ws.ClientCredentials.Windows.AllowNtlm = true; 
      ws.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Delegation; 
      var record = ws.Read("XYZ"); 
     } 
    } 

    private static BasicHttpBinding GetBindingTransportCredentialOnly() 
    { 
     var binding = new BasicHttpBinding(); 
     binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; 
     binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; 
     binding.MaxReceivedMessageSize = 1048576; 
     return binding; 
    } 

희망이 도움이됩니다. 행운을 빕니다!

관련 문제