Web service in IIS

  • I am working on setting up a Conquest server with its web interface running in IIS on a virtual server.
    I've created the Conquest server and verified that I can access it via DICOM.
    I've created the web site in IIS and set execute permissions throughout the directory structure.
    I've created an AppPool specificly for Conquest.
    I've created a web service extension instance allowing CqDicom.dll, dgate.exe (both the one running CGI, and the one running the actual DICOM server), DgateServ.exe, libmysql.dll, and ZipDll.dll. - I've included everything I thought made sense, and then some attempting to make things work.
    I can access regular html documents and a compiled CGI-program just generating a Hello World message fine, but when I point my browser to dgate.exe, it hangs for five minutes and then tells me I've reached a CGI Timeout.


    I'm running conquest 1.4.16 using a MS SQL database.


    My directory structure is as follows:
    D:\DicomServer\ <- Main conquest files.
    D:\DicomServer\webserver <- contains ActiveFormProj1.ocx and conquest.jpg
    D:\DicomServer\webserver\cgi-bin <- dgate.exe, dicom.sql, sample.cq, TestCGI.exe (HelloWorld program testing CGI), and dicom.ini containing:



    I hope someone here can help me. Might it be a problem that I'm not using port 80 for this? I'm not at a liberty to use this port on this server.

  • Hi,


    you have to use the latest update 1.4.16i (from the forum) for IIS. And make sure dgate.exe is accepted as CGI script in the IIS settings. Use ....dgate.exe/mode=top to start the web interface.


    Marcel

  • I replaced the Conquest server software with the latest version ( build date march 31st 2011 ). dgate.exe has the same properties and permissions as the HelloWorld-CGI that I made, which is working fine. It still times out when I try to access .../dgate.exe?mode=top (I'm guessing you meant '?' and not '/')

  • Hmm... I don't see anything new in the post you linked. Create permissions to run the dgate.exe executable, and set executable permissions in the web site. Though I'm guessing you got it to run on IIS7 since that's what the instructions are for? I'm trying to get it to run on a Windows Server 2003 Standard Edt. with IIS6. Have you tried it in that setup?
    My guess is that dgate.exe is running other executables, to which the internet user (IUSR_HOSTNAME) has no execute rights, as subprocesses, and this is what makes it fail. Can you tell me which, if any, other executables dgate.exe accesses?

  • I'm working with IIS6 on Windows Server 2003 Standard edt., but I think I've already done the corresponding things for IIS6 as the post describes for IIS7: Get the IIS to allow running dgate.exe (in cgi-bin), and set execute permissions for the Conquest web site.
    Is there any way I can configure dgate.exe to log debug information when using the CGI interface?

  • Hi,


    The CGI dgate.exe does not access anything by default, it just tries to open up a DICOM connnection with the server. If that fails, a web page would still display after a few seconds. All it does is write some HTML text to stdout.


    I have seen it work on IIS6 and IIS7, but I do not have IIS6 handy.


    Marcel

  • Well this is interesting...


    As i said, I made a small app in c# that writes very simple html to the console and put it on the same web site as dgate.exe, and it worked with no problems. Now, though, I tried to give it a few simple sql features, listing the patient names from the Conquest SQL database. This app threw an exception as soon as I ran the SqlConnection constructor - even if it was run with no parameters at all. The CGI dgate.exe doesn't even access the Conquest database?
    I tried running the same SQL-enabled test CGI app on an Apache server on my local computer, and it worked just fine. The problem definitely seems to be related to the user permission setup on the IIS server somehow... I'll read up on the details of how to work these things right, and return with the solution if I find it.


    Thanks for the response :)

  • I've tried some more things in my attempts to reproduce the timeout error I get when trying to access the dgate.exe CGI.
    My little test CGI-program is growing and now also uses the ClearCanvas libraries to get a list of patient IDs using DICOM. This works just fine. I also run the Conquest dgate.exe as a System.Diagnostics.Process (argument "--patientfinder:local|0|%0.0s%s" ) and get the same list of patient IDs with no problems...
    I'm not sure where to go from here. Is the last function not how the CGI dgate.exe uses the Conquest dgate.exe as well?


    Below is my DGateEquivalent class that I'm working on. It contains

    • a constructor which connects the object to the SQL database[/*]
    • a function returning a list of the patient names from the SQL database[/*]
    • a function returning a list of the patient IDs from a direct DICOM query, using ClearCanvas[/*]
    • a function returning a list of the patient IDs from dgate.exe[/*]


  • I'll suggest this to the rest of the group. Unfortunately it's not my decision alone. But since IIS seems decided not to be cooperative, I don't see any other option - which is fine with me :)


    Thanks a lot for the help.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!