Web service that calls methods from imported dll doesn't work on IIS but it woks on development environment.

I have web service that imports "xx.dll" written in c++. This "xx.dll" make a connect to the MapPoint activex and return some data from MapPoint. Everything works fine in development environment, but when I deploy to IIS, then I'm getting "External component has thrown an exception". I did a trace in "xx.dll" and I find out that everything stops on call "MapPointApp->Connect()".
I think it could be problem with permissions in IIS, but I don't know what

Thanks,
Miran


Answer this question

Web service that calls methods from imported dll doesn't work on IIS but it woks on development environment.

  • Harald Kostinger

    Hi Todd,

    I'm using visual studio 2005 and delphi 2006 for development. In visual studio and in delphi you have special web server for debugging that starts when you start debugging web service, so if I use whichever with integrated web server it works fine. But if I use IIS server for debugging insted of integrated one, then I'm getting the error mentioned before. So under IIS it doesn't work if I debug or deploy this web service.

    For dev. box I'm using XP and I tried to modify <processModel> parameter and there was no difference after that. I don't know maybe is this more IIS related then .NET. I'm not to good in ASP maybe I should try to call the same DLL directly from ASP, to see if i'm getting the same error. What do you think, do you have any other suggestion Maybe yo change permissions on path where Map Point is in staled

    Thanks,
    Miran Drgajner


  • marwansiala

    That change would require an IIS reset. Open a command prompt and type in "iisreset" without quotes. Then browse to ASPX page again and then you should see the aspnet_wp.exe process startup as the correctly configured identity in the machine.config file. (This applies to XP and 2000 only, for Windows 2003, you configure this by changing the identity of the application pools).

    hth

    -Todd



  • ding ding

    But how can I know what permissions do I need to make a call to the Connect method


    Miran

  • AndrewStopford

    Only thing that I don't understand now is when I set parameters in <processModel> to userName="SYSTEM" and password="AutoGenerate" aspnet_wp.exe still runs under ASPNET account


    Miran

  • MinakiSerinde

    Hi,
    now i we have a problem on Windows 2003, we made a custom user, which is set in application pool indetity, wenn we try too run the application we get Server execution failed
    Can't create a mappoint object , but if we log on the server as the custom user it all ok

    Luka



  • Dream

    You have to check what are the permissions required in order to make a call to the Connect method.

    IIS is running by default with a low permission account called ASPNET, you can change that to a higer permission account to test if that's the problem.

    Good luck,



  • mirabel25

    Hello Mirand,

    You said that this all works from your Development environment. Can you elaborate about that Did it work within IIS on your development machine What OS is your dev box running Or are you stating that it works while you're within the VS.NET debugger

    Note that if you're creating a web service to do this and you want to change the identity of the process then for XP/2000 machines you'll have to modify the <processModel> element of the machine.config file. For Win2003 you just need to change the identity of the Application Pool hosting your web site.

    Post back more details if you're still stuck with this.

    -Todd Foust



  • planetmarshalluk

    Thanks it works now,

    When I set <identity impersonate="true"/> and I used appropriate account then it works.

    Miran

  • Tim Pedersen

    Hello Miran,

    Asp.net pages, including web services, do NOT impersonate by default, so they will execute under the security token and context of the process identity. You stated that you changed the <processModel>'s username and password attributes. Did you see the aspnet_wp.exe process launch correctly as the user you configured

    To enable impersonation then you would need to have <identity impersonate="true"/> within your web.config file. What this means is that ASP.NET will impersonate the identity passed to it from IIS. So the identity that the request executes as whatever you have configured within IIS security. If part of your troubleshooting is to change the <processModel> tag of the machine.config then also make sure that you are NOT impersonating within the web.config file.

    I agree that you would need to review this MapPointApp->Connect() method. What does it do Is there a requirement within the policy (secpol.msc) that is needed to call it Do you think it's simple file or registry permissions problems Download and use Filemon and Regmon while reproducing the error to see if you are getting any Access Denied errors in the failing case as compared to the working case.

    If you need further assistance please call into our support and we can debug it further with you: 1-800-936-5800



  • Web service that calls methods from imported dll doesn't work on IIS but it woks on development environment.