[DCOM Settings]Webservice moet call twee keer uitvoeren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
We gebruiken Hummingbird als document management system en HB heeft een DM API server die er voor zorgt dat de HB Client documenten en metadata kan ophalen, wijzigen en toevoegen.
We hebben een eenvoudige webservice gemaakt, die gebruik maakt van die DM API en waarmee je ook documenten en metadata kunt beheren.
Deze webservice zal gebruikt worden door externe applicaties om met HB te communiceren.

De webservice is geschreven in VB.NET voor IIS6 (ASP.NET v2).
We hebben een ontwikkel- en een testomgeving op een VMWare met Windows Server 2003 SP1 Standard Edition en een productieomgeving op eigen hardware met Windows Server 2003 SP2 Standard.

Ik test de webservice met SoapUI.

Op de O en T gaat het prima, maar op de P niet.
We moeten elke aanroep twee keer uitvoeren, omdat de eerste keer een DM API foutmelding terug komt over dat de DM server niet bereikbaar is. Uiteraard is de DM Server wel beschikbaar, honderden gebruikers zitten er mee te werken.

Nu hebben we het vermoeden dat het aan de DCOM instellingen ligt, maar we kunnen de fout niet achterhalen. Er wordt ook niets gelogd in de logfiles.
Uiteraard heb ik alle instellingen van de T en P met elkaar vergeleken, maar geen verschillen kunnen ontdekken.

Heeft iemand nog een suggestie?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:46

Creepy

Tactical Espionage Splatterer

Misschien handig om de daadwerkelijke foutmelding even te geven en om aan te geven hoe je de service precies aanroept en op welk moment de foutmelding dan optreed? Zo blijft het voor ons ook alleen maar gokwerk.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Je hebt helemaal gelijk.
Hier de foutmelding:
Kan de DM Server-interface niet laden. De DM-server is mogelijk niet gestart.
Het is jammer genoeg in het Nederlands, kan daar weinig aan doen.

De foutmelding treedt bij elke aanroep op. Als ik binnen enkele seconden van een goede aanroep opnieuw aanroep gaat het nog goed, anders moet ik weer twee keer aanroepen.

De webservice heeft meerdere methods en ze hebben allen hetzelfde probleem.
Hier is een van de methods:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    <WebMethod(Description:="Returns a Domain Security Token if command is successfull")> _
    Public Function Login(ByVal NetworkType As Short, ByVal UnitName As String, ByVal UserName As String, ByVal Password As String) As String
        Try
            Dim _PCDLogin As Hummingbird.DM.Server.Interop.PCDClient.PCDLogin = New Hummingbird.DM.Server.Interop.PCDClient.PCDLogin()
            '//Add login credentials
            _PCDLogin.AddLogin(NetworkType, UnitName, UserName, Password)
            '//Attempt login
            _PCDLogin.Execute()
            If _PCDLogin.ErrNumber <> 0 Then
                Throw New Exception(_PCDLogin.ErrDescription)
            Else
                Return _PCDLogin.GetDST()
            End If
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Function


Maar het lijkt erop dat de eerste keer de aanroep hier nog niet aankomt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Na weken van uitzoeken met de bijbehorende bloed, zweet en tranen is het eindelijk gelukt om de webservice op de productie omgeving correct te configureren.

Omdat de 'load balancing' optie (FOLB) van HB op productie geactiveerd was, ging elke eerste request naar de webservice fout.
Het vermoeden was dan al gauw dat het met de rechten te maken had tussen de twee servers in het FOLB cluster.

Omdat de servers niet in een domein zitten, hebben ze alleen rechten op elkaars servers als het gebruikersaccount gelijk is. Wel werd dezelfde gebruikersnaam gebruikt in de web.config, maar niet hetzelfde wachtwoord.
Ik heb de wachtwoorden gelijk gezet en nu werkt de webservice als een zonnetje.