• Visitors can check out the Forum FAQ by clicking this link. You have to register before you can post: click the REGISTER link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. View our Forum Privacy Policy.
  • Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!

Windows Service Timed Action

Collapse
X
  •  
  • Filter
  • Time
  • Show
Clear All
new posts

    #41
    Originally posted by d000hg View Post
    Oh go on then.
    Thanks.

    OK so the actual error was an access violation. This was occuring in Managed Code.

    Code:
    try
    {
    
        callToWebService(parameter1, parameter2,auditAccount, parameter3); //Breaks here
    
    }
    catch (Exception ex)
    {
        LogEvent("Summat 'appened",9999);
    }
    The exception occured outside the framework in unmanaged code, wrapped by the framework and hence the catch block never got executed.

    Because of my sloppy, but valid, code the web service call was implemented thus :

    Code:
        callToWebService(parameter1, parameter2,System.Security.Principal.WindowsIdentity.GetCurrent().Name, parameter3);
    Stepping this through in WinDB (and IDL as I couldn't get integrated code debugging working ) You can clearly see it try and evaluate the 3rd parameter first (as expected). This line then jumps into building the proxy stub generated by the IDE when you include the web reference. The parameter, when run as a windows service only, evaluates to null. The web service call never actually happens, rather it gets to the point of making the call, then throws a structured windows exception, which then jumps in the debugger to :

    ntdll.kiuserexceptiondispatcher

    The thread in mscorlib collapses without trace, and windows bubbles the structured exception up until it hits service manager, which then dumps it to the event log with a rather vague message.

    By splitting the code out into two calls, thus :

    Code:
       string accountName  =System.Security.Principal.WindowsIdentity.GetCurrent().Name;
       callToWebService(parameter1, parameter2,accountName, parameter3);
    As I said before, the original code worked fine as a console app, but presented this problem when running as a windows service.

    The only way to catch this behaviour was by attaching a debugger to the compiled image using WinDB and SOSex.dll.

    Much fun had stepping through IDL and assembly, chasing down hex addresses as the integrated code view didn't work
    Knock first as I might be balancing my chakras.

    Comment


      #42
      Well, that's a relief ! I'm going to be able to concentrate on my own work now. Thanks Suity
      When freedom comes along, don't PISH in the water supply.....

      Comment


        #43
        Originally posted by TestMangler View Post
        Well, that's a relief ! I'm going to be able to concentrate on my own work now. Thanks Suity
        You're welcome. Can you let the others now?
        Knock first as I might be balancing my chakras.

        Comment


          #44
          Originally posted by suityou01 View Post
          You're welcome. Can you let the others now?
          No, but I'll let them know if you want ?
          When freedom comes along, don't PISH in the water supply.....

          Comment


            #45
            So because you were sloppy, you had a problem with soSex.dll?
            Originally posted by MaryPoppins
            I'd still not breastfeed a nazi
            Originally posted by vetran
            Urine is quite nourishing

            Comment


              #46
              Originally posted by d000hg View Post
              So because you were sloppy, you had a problem with soSex.dll?
              Not quite. Because I was sloppy, sosex came to my rescue.

              Lesson learned, .net contains unmanaged code and will not always follow your prescribed error handling path.
              Knock first as I might be balancing my chakras.

              Comment


                #47
                Originally posted by stek View Post
                In Unixland when we run something like this under cron, we have to be mindful of the the environment the process runs will run under; for example I always use absolute paths since I can't assume the environment when running detached has the same paths/env as the environment I'm testing it under.
                Aaargh! Hard coding filenames is never a good thing.

                Originally posted by stek View Post
                Could it be similar in Windows?
                Off topic I know, but this is the nightmare that is bash login:



                Bash Initialisation files
                Behold the warranty -- the bold print giveth and the fine print taketh away.

                Comment


                  #48
                  Originally posted by Sysman View Post
                  Aaargh! Hard coding filenames is never a good thing.
                  I hard code all Environment Variables from the same reference file, and then change this file for each environment leaving the main code the same for all tiers
                  Originally posted by Stevie Wonder Boy
                  I can't see any way to do it can you please advise?

                  I want my account deleted and all of my information removed, I want to invoke my right to be forgotten.

                  Comment


                    #49
                    Originally posted by Sysman View Post
                    Aaargh! Hard coding filenames is never a good thing.



                    Off topic I know, but this is the nightmare that is bash login:



                    Bash Initialisation files
                    I was referring to simple shell scripts really, where the PATH variable isn't present in crons environment, so for example the script under cron won't be able to find 'find' or 'sleep' for example. I know windows has variable set so I was wondering if a service running under Windows would have access to them..

                    Comment


                      #50
                      Originally posted by suityou01 View Post
                      You're welcome. Can you let the others now?
                      If your code was as full of typos as your posts we might have found the root cause to your problems
                      Originally posted by Stevie Wonder Boy
                      I can't see any way to do it can you please advise?

                      I want my account deleted and all of my information removed, I want to invoke my right to be forgotten.

                      Comment

                      Working...
                      X