2013-06-19 45 views
1

我想用DotCMIS連接到Alfresco,但我似乎無法正常工作。我得到這個錯誤「錯誤:提供的URI方案'http'無效;期望'https'」我不會對https做任何事情,我也不想要:)使用DotCMIS連接到Alfresco會導致https錯誤

當我Google對於這個錯誤,我得到了配置解決方案...但我不使用我的配置來進行任何綁定,或者在DotCMIS中定義一個綁定名稱。

我做了一個創建錯誤的小例子項目。 CODE:

private static void Main(string[] args) 
     { 
      string user = "admin"; 
      string password = "pass"; 
      string serviceUrl = "http://localhost:port/alfresco/cmis/"; 
      string objectType = "D:my:objectType"; 
      string repositoryid = "repositoryId"; 

      Connector con = new Connector(); 
      con.Connect(user, password, serviceUrl, repositoryid, objectType); 
     } 
    } 

    public class Connector 
    { 
     public void Connect(
      string user, string password, string servicesUrl, 
      string repositoryId, string objectTypeId_0) 
     { 
      // default factory implementation 
      IDictionary<string, string> parameter = new Dictionary<string, string>(); 

      // user credentials 
      parameter.Add((System.String) (DotCMIS.SessionParameter.User), (System.String) (user)); 
      parameter.Add((System.String) (DotCMIS.SessionParameter.Password), (System.String) (password)); 

      // connection settings 
      parameter.Add(
       (System.String) (DotCMIS.SessionParameter.BindingType), 
       (System.String) (DotCMIS.BindingType.WebServices.ToString())); 

      parameter.Add(
       (System.String) (DotCMIS.SessionParameter.WebServicesAclService), (System.String) (servicesUrl 
                            + "ACLService?wsdl")); 
      parameter.Add(
       (System.String) (DotCMIS.SessionParameter.WebServicesDiscoveryService), 
       (System.String) (servicesUrl + "DiscoveryService?wsdl")); 
      parameter.Add(
       (System.String) (DotCMIS.SessionParameter.WebServicesMultifilingService), 
       (System.String) (servicesUrl + "MultiFilingService?wsdl")); 
      parameter.Add(
       (System.String) (DotCMIS.SessionParameter.WebServicesNavigationService), 
       (System.String) (servicesUrl + "NavigationService?wsdl")); 
      parameter.Add(
       (System.String) (DotCMIS.SessionParameter.WebServicesObjectService), (System.String) (servicesUrl 
                             + 
                             "ObjectService?wsdl")); 
      parameter.Add(
       (System.String) (DotCMIS.SessionParameter.WebServicesPolicyService), (System.String) (servicesUrl 
                             + 
                             "PolicyService?wsdl")); 
      parameter.Add(
       (System.String) (DotCMIS.SessionParameter.WebServicesRelationshipService), 
       (System.String) (servicesUrl + "RelationshipService?wsdl")); 
      parameter.Add(
       (System.String) (DotCMIS.SessionParameter.WebServicesRepositoryService), 
       (System.String) (servicesUrl + "RepositoryService?wsdl")); 
      parameter.Add(
       (System.String) (DotCMIS.SessionParameter.WebServicesVersioningService), 
       (System.String) (servicesUrl + "VersioningService?wsdl")); 
      parameter.Add((System.String) (DotCMIS.SessionParameter.RepositoryId), (System.String) (repositoryId)); 


      ISessionFactory factory = DotCMIS.Client.Impl.SessionFactory.NewInstance(); 

      ISession session = factory.CreateSession(parameter); 
     } 
+0

你有沒有告訴.Net它應該要求HTTPS的某些類型的Web服務?如果你切換到atompub,它會工作嗎? – Gagravarr

+0

當我使用AtomPub它似乎工作...(但我需要使用webservice) 我沒有設置任何告訴.net使用https ...我創建了一個簡單的控制檯項目。 – BvdVen

回答

3

檢查DotCMIS README文件:

The Web Services binding only works with HTTPS. The .NET framework does not allow calls with UsernameTokens over plain HTTP.

你必須在這裏使用HTTPS。

+0

謝謝,我會研究一下......我認爲在DotCMIS示例頁面中他們沒有使用https然後,這有點奇怪。 (http://chemistry.apache.org/dotnet/getting-started-with-dotcmis.html) – BvdVen

+0

我在自述中看到它......感謝您的信息。 – BvdVen