Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πρόβλημα με κλήση COM απο Asp.net

Îåêßíçóå áðü ôï ìÝëïò KCorax. Τελευταία δημοσίευση από το μέλος KCorax στις 02-07-2007, 12:11. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  01-07-2007, 23:36 33303

    Crying [:'(] Πρόβλημα με κλήση COM απο Asp.net

    Όταν κάνω κλήση του System.Runtime.InteropServices.Marshal.GetActiveObject("Όνομα com αντικειμένου") ή καλώ τον com constructor τρώω εξαίρεση με Retrieving the COM class factory for component with CLSID
    {τάδε} failed due to the following error: 80070005.

    Έχω δοκιμάσει ότι ήξερα, έχω δώσει προνόμοια απο το dcom config σε διάφορους χρήστες, φρόντισα για πρόσβαση σε σύστημα αρχείων απο το asp.net, μέχρι που έβαλα τον IIS να τρέχει σαν admin (ναι και εγώ είχα αντίρρηση με αυτό) !!! Δεν πιάνει τίποτα.
    Είμαι βέβαιος οτι το πρόβλημα παίζει μεταξύ των δύο γιατί όταν τρέχω τον ίδιο κώδικα σαν τοπική εφαρμογή παίζει άψογα. Το COM που καλώ δυστυχώς δεν αφήνει κάπου event logs (σύστημα αρχεία κλπ) οπότε δεν έχω τρόπο να ξέρω αν η αστοχία συμβαίνει με το που το κοιτάζω ή παρακάτω ενώ προσπαθεί να τρέξει.

    Τι άλλες αρχιτεκτονικές θα μπορούσα να δοκιμάσω ; Πχ να βάλω τον κώδικα να τρέχει μέσα σε ένα Windows Service ή ServicedComponent ; Αλλά μετά πως θα το καλώ απο το Web Service ; Η εφαρμογή παρέχει στην ουσία υπηρεσίες queue πάνω απο ένα single-instance com compontent. Ποια είναι η καλύτερη λύση αν απομακρυνθώ απο την τρέχουσα προσέγγιση εντελώς ;

    Ας βοηθήσει κάποιος απειλείται η ψυχική μου υγεία.

    GK
    http://theopenfund.com
  •  02-07-2007, 00:19 33304 σε απάντηση της 33303

    Απ: Πρόβλημα με κλήση COM απο Asp.net

    Νομίζω ότι αν είναι να απομακρυνθείς τελείως απο την "τρέχουσα" προσέγγιση, μια πολύ καλή επιλογή θα ήταν κάποιο message bus, MSMQ ας πούμε, ίσως ακόμα και πάνω απο WCF ανάλογα το πόσο current είσαι στη version του framework που χρησιμοποιείς.

    Άν πρέπει να παραμείνει το COM component απεξάπαντως, θα το "έκρυβα" πίσω απο ένα Windows Service, και αυτό με τη σειρά του πίσω απο το MSMQ/WCF δίνοντας έτσι τη μέγιστη ευελιξία όσον αφορά τον τρόπο με τον οποίο επικοινωνούν οι clients με το service. Το MSMQ θα σου δώσει queueing out of the box, και έχεις μια πολύ ευέλικτη λύση.



    Angel
    O:]
  •  02-07-2007, 09:48 33309 σε απάντηση της 33303

    Απ: Πρόβλημα με κλήση COM απο Asp.net

    Αν θέλεις ένα single instance που θα καλείς μόνο από την εφαρμογή σου, τότε χρησιμοποίησε απλά μια static variable. Θα έχεις βέβαια πρόβλημε με το Application Recycling που έχει η ASP.NET. Φυσικά μπορείς να το απενεργοποιήσεις, αλλά αν θέλεις ένα single instance που να μην πέφτει ποτέ, τότε θέλεις Windows Service. Αυτό θα τρέχει ένα WCF Service το οποίο θα γίνεται exposed στον υπόλοιπο κόσμο με NetNamedPipeBinding κατά προτίμηση, για να μην είναι προσβάσιμο από απομακρυσμένους υπολογιστές. Αυτό πάλι για να υλοποιήσεις το δικό σου queue, όπως φαντάζομαι ότι κάνεις στο COM project σου.

    Αν βρω λίγο χρόνο θα σου στείλω ένα παράδειγμα. 


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  02-07-2007, 10:52 33314 σε απάντηση της 33309

    Απ: Πρόβλημα με κλήση COM απο Asp.net

    Παιδιά ευχαριστώ για την απάντηση, πριν κλείσω χθες βράδυ το μετακίνησα σε Windows Service τη σχετική υποδομή αλλά δεν έχω ιδέα πως θα to κάνω να επικοινωνεί με το WS. Δυστυχώς δεν έχω εμπειρία με το MSMQ και το έργο έχει πολύ μικρή προθεσμία οπότε πρέπει να μάθω σήμερα ότι είναι να μάθω. Δημήτρη όταν λες WCF αυτό σημαίνει οτι θα πρέπει να πειράξω το VS.net μου ; Ρωτάω γιατί σε πειραματισμούς μου η εμπειρία ήταν τραυματική. Αν έχεις τελικά εκείνο το παράδειγμα θα βοηθούσε γιατί η τεκμηρίωση που βρίσκω είναι κάπως προβληματική.

    ΥΓ: το Com δεν είναι δικό μου project αλλά μια σχετικά δημοφιλής εφαρμογή cad, άρα δεν μπορώ να πειράξω κάτι εκεί, μόνο να το καταναλώνω. Πάντως παίζει σωστά η ουρά μου.

    GK
    http://theopenfund.com
  •  02-07-2007, 11:57 33318 σε απάντηση της 33314

    Απ: Πρόβλημα με κλήση COM απο Asp.net

    Στο Windows Service που έκανες φαντάζομαι ότι είναι απλά ένας wrapper του COM; Και ο προβληματισμός σου είναι πως πλέον θα καλέσεις το windows service έτσι ώστε αυτό να καλέσει το COM σου; Αυτό λοιπόν είναι που θα κάνεις με το WCF. Θα προσθέσεις στο windows service ένα WCF service το οποίο θα γίνεται exposed με tcp έτσι ώστε να το καλεί η εφαρμογή σου.

    Δεν καταλαβαίνω τι εννοείς "να πειράξω το VS.net μου".

    Νομίζω όμως ότι έτσι κάνουμε πολύ κόπο για το τίποτα. Ίσως πρέπει να βρεις τι φταίει και δεν μπορείς να καλέσεις απευθείας το COM. Φαντάζομαι ότι έχει να κάνει με pesmissions. Καταρχήν, αν είσαι σε Windows 2003 Server πρέπει να παίξεις με τον Network Service χρήστη και όχι με τον ASP.NET.



    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  02-07-2007, 12:11 33319 σε απάντηση της 33318

    Απ: Πρόβλημα με κλήση COM απο Asp.net

    Όταν λέω να πειράξω εννοώ να εγκαταστήσω τα απαραίτητα extensions για να παίζω με .net 3 projects. Το έκανα τελικά και φαίνεται να λειτουργεί σωστά.

    Θα προτιμούσα ειλικρινά να λύσω το πρόβλημα πειράζοντας τα προνόμια, αλλά δοκίμασα να ορίσω σαν ανώνυμο χρήστη τον Administrator και να θέσω την πρόσβαση του σχετικού DCOM σε launch/access/configuration με προνόμια Allow τα πάντα στον Everyone. Ειλικρινά δεν βλέπω τι άλλο μπορώ να κάνω.
    GK
    http://theopenfund.com
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems