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

 

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

Φιλοξενία .NET control σε HTML

Îåêßíçóå áðü ôï ìÝëïò Dimitris Papadimitriou. Τελευταία δημοσίευση από το μέλος Dimitris Papadimitriou στις 07-01-2007, 16:29. Υπάρχουν 10 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  06-01-2007, 22:12 23134

    Φιλοξενία .NET control σε HTML

    Αυτό το άρθρο δείχνει πως μπορεί κανείς να φιλοξενήσει ένα .NET control  που βρίσκεται σε μια .NET assembly σε μια σελίδα HTML.
    Το έχω δοκιμάσει και λειτουργεί. Μόνο όμως όταν η σελίδα βρίσκεται σε ένα virtual directory, οπότε την ανοίγω από τον iexporer με διεύθυνση του τύπου http://localhost/mysite/mypage.htm
    Αυτό που θέλω να κάνω είναι να την ανοίξω σαν αρχείο, χωρίς τον IIS, δηλαδή να γράψω τον iexplorer c:\mydocs\mysite\mypage.htm.
    Δυστηχώς όμως δεν μου δουλεύει.
    Σας λέει τίποτα το όλο σκηνικό;

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  06-01-2007, 22:39 23136 σε απάντηση της 23134

    Απ: Φιλοξενία .NET control σε HTML

    Για πιο άρθρο μιλάμε?
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  06-01-2007, 23:32 23137 σε απάντηση της 23136

    Απ: Φιλοξενία .NET control σε HTML

    ε... καλά. Σε όλους μπορεί αν συμβεί!!
    http://www.15seconds.com/issue/030610.htm

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  07-01-2007, 00:34 23138 σε απάντηση της 23134

    Απ: Φιλοξενία .NET control σε HTML

    No prob, απλά νόμιζα ότι εγώ είχα χάσει κάτι Tongue Tied
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  07-01-2007, 00:43 23139 σε απάντηση της 23138

    Απ: Φιλοξενία .NET control σε HTML

    Εμένα μου φαίνεται λογικό να μην δουλεύει καθώς το control φαίνεται να γίνεται ναι μεν render στον server αλλά χρησιμοποιεί το local CLR για όλα τα υπόλλοιπα. Τουλάχιστον αυτό κατάλαβα εγώ. Άλλωστε απο ότι βλέπω στο άρθρο γι'αυτό να αλλάζει και τα Settings του virtual directory, για να μπορέσει να τρέξει το .dll.
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  07-01-2007, 01:36 23140 σε απάντηση της 23139

    Απ: Φιλοξενία .NET control σε HTML

    Το παράδειγμα του άρθρου δουλεύει. Το control τρέχει στον client και απαιτεί το .net εγκατεστημένο στον client. Το πρόβλημα είναι ότι δουλεύει μόνο όταν η σελίδα είναι σε web site και κατεβαίνει από τον iexplorer και δεν δουλεύει όταν ανοίξεις τη σελίδα που είναι αποθηκευμένη από το filesystem.
    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

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

    Απ: Φιλοξενία .NET control σε HTML

    Big Smile

    Από μια πρώτη ματιά στο άρθρο, μάλλον δεν τα λέει όλα ο τύπος... Η δεν ξέρει τι ακριβώς γίνεται και τα μασάει, ή κάπου το έχει βρει κάτι σχετικό και μάλλον το "αναμάσησε"...

    Μερικές απλές παρατηρήσεις:

    • Το tag που σηκώνει το managed control είναι το object. Άρα ο IE σηκώνει ένα ActiveX control, που υπόκειται στα security zones του Internet Explorer. Αυτό που είναι επακόλουθο, αφού το control είναι managed, είναι ότι κύριος δεν έχει αναφέρει καθαρά ότι το control που φτιάχνεται πρέπει να κάνει explose COM interface. Μπορεί μέσα από το project να μην το έχει κάνει, αλλά μάλλον το κάνει αυτόματα ο IE.
    • Στην html σελίδα που αναφέρει στο classid και το πρωτόκολλο που θα χρησιμοποιηθεί για να βρει το control, το http. Αν το "http:AuthorsWebServiceClientControl.dll#AuthorsWebServiceClientControl.AuthorsControl" γίνει "AuthorsWebServiceClientControl.AuthorsControl" είναι σίγουρο ότι θα παίζει και local.
    • Δεν μπορώ να καταλάβω γιατί το θεώρησες περίεργο. Η γέφυρα από το managed στο unmanaged, το COM Interop, υπήρχε από την αρχή του .NET Framework. Έχει και πιο "τρελά" στην σύληψη implementations - πχ η MS διατυμπανεί ότι η J# μπορεί να φιλοξενίσει κάθε client application της Java, άρα και τα applets, σωστά; Ναι, υπάρχει και τεχνολογία που λέγεται "J# Browser controls" και είναι ισοδύναμη των Java applets. Το runtime τους είναι ενσωματομένo στο .NET Runtime v2.0, σε αντίθεση με αυτό της έκδοσης v1.1. Πιθανώς είναι και αυτό που είναι υπεύθυνο για το αυτόματο convert του managed control σε ActiveX για να τρέξει στον IE.

    Αν κάτι σου λείπει, για να κολήσεις τα κομάτια μεταξύ τους, πες να δούμε αν θα το βρούμε...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  07-01-2007, 11:10 23143 σε απάντηση της 23142

    Απ: Φιλοξενία .NET control σε HTML

    Συνημμένα: hostedTestControl.zip
     gcapnias wrote:
    • Το tag που σηκώνει το managed control είναι το object. Άρα ο IE σηκώνει ένα ActiveX control, που υπόκειται στα security zones του Internet Explorer. Αυτό που είναι επακόλουθο, αφού το control είναι managed, είναι ότι κύριος δεν έχει αναφέρει καθαρά ότι το control που φτιάχνεται πρέπει να κάνει explose COM interface. Μπορεί μέσα από το project να μην το έχει κάνει, αλλά μάλλον το κάνει αυτόματα ο IE.

    Όντως πρόκεται για ActiveX. Άλλωστε και ο iexplorer βγάζει σχετικό security warning για activex. Σίγουρα στο project δεν κάνει κάποια ρύθμιση για COM και ούτε κι εγώ στο δικό μου sample δεν έχω κάνει. Και παίζει όταν η σελίδα μου βρίσκεται στον IIS.

     gcapnias wrote:
    • Στην html σελίδα που αναφέρει στο classid και το πρωτόκολλο που θα χρησιμοποιηθεί για να βρει το control, το http. Αν το "http:AuthorsWebServiceClientControl.dll#AuthorsWebServiceClientControl.AuthorsControl" γίνει "AuthorsWebServiceClientControl.AuthorsControl" είναι σίγουρο ότι θα παίζει και local.

    Δυστηχώς όχι, δεν παίζει. Δοκίμασα κι άλλες μορφές, όπως να αφαιρέσω μόνο το http: ή να βάλω πλήρες path του dll (χαζό αλλά το δοκίμασα κι αυτό).

     gcapnias wrote:
    • Δεν μπορώ να καταλάβω γιατί το θεώρησες περίεργο.

    Ποιο; Το μόνο που θεωρώ περίεργο είναι ότι δεν μπορώ να βρω πως θα το κάνω να παίξει χωρίς η σελίδα μου να είναι hosted σε IIS web site.

    Επισυνάπτω και ένα zip για να κάνετε αν θέλετε δοκιμή. Αποσυμπιέστε το zip και δημιουργείστε ένα virtual directory (με όνομα π.χ. testHosted) που να βλέπει στην αποσυμπιεσμένο φάκελο. Μετά καλέστε τη σελίδα test.htm που βρίσκεται εκεί από τον iexplorer δίνοντας http://localhost/testHosted/test.htm. Λογικά θα λειτουργήσει. Σε εμένα τουλάχιστον λειτουργεί. Μετά δοκιμάστε να καλέσετε τη σελίδα από τον iexplorer δίνοντας C:\.......\UnzippedFolder\testHosted.htm. Αυτό δεν λειτουργεί. Εμφανίζει μόνο τον placeholder με ένα X. Και το ερώτημα είναι πως θα λειτουργήσει!
    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

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

    Απ: Φιλοξενία .NET control σε HTML

    Δημήτρη,

    Δεν δουλεύει έτσι - πως να γίνουν κάποιες αλλαγές για να παίξει και μόνο. Καταλαβαίνεις ότι πολλά πράγματα που παραβλέπεις αυτή τη στιγμή, σε σταματάνε να ολοκληρώσεις αυτό που προσπαθείς να κάνεις:

    • Πρώτα από όλα ο IE είναι unmanaged κώδικας. Θα πρέπει να αρχίσεις να σκέφτεσαι σαν να θέλεις να φτιάξεις ένα ActiveX control που θέλεις να τρέξει στον IE. Αν και είναι εύκολο φτιάχνεις ένα ActiveX control, καταλαβαίνεις ότι είναι πολύ διαφορετικό να το τρέχεις από ένα web server, και πολύ διαφορετικό από ότι local. Αν έτρεχε κατευθείαν σε local θα μπορούσα με μια σελίδα να τρέξω οποιοδήποτε control - και σε συνέπεια κώδικα - στον υπολογιστή σου.
    • Αν και unmanaged κώδικας θα πρέπει να κάνει implement το IObjectSafety interface, για να δηλώνει ότι είναι safe for scripting και safe for initialiazing για να μπορεί να τρέξει local

    Δες τo άρθρο "Creating an InfoPath Custom Control using C# and .NET", μπορεί να σε βοηθήσει προς αυτή την κατεύθυνση.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  07-01-2007, 16:00 23155 σε απάντηση της 23151

    Απ: Φιλοξενία .NET control σε HTML

    Μα αυτό που λες είναι μια λιγάκι διαφορετική λύση. Ουσιαστικά λες - διόρθωσέ με αν κάνω λάθος - να κάνω το .net control μου COM visible και να το χρησιμοποιήσω έτσι στον IE.

    Γιατί όμως να το κάνω, αφού αυτό μπορεί να το αναλάβει ο IE και να εμφανίζει το .net control μου ως έχει; Ότι δουλεύει είναι βέβαιο. Απλά δεν δουλεύει όταν η σελίδα και το dll μου δεν είναι στον IIS.

    Αυτό που εγώ φαντάζομαι - το οποίο ανέφερες κι εσύ παραπάνω - είναι ότι κάτι παίζει στο classid, το οποίο έχει http:. Δοκίμασα όμως πολλές μορφές και δεν παίζει με τίποτα.

    Αν κάνω το control μου να είναι com visible, τότε ίσως γίνει, αλλά είναι μια άλλη λύση την οποία θέλω να αφήσω προς το παρόν.
    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  07-01-2007, 16:29 23160 σε απάντηση της 23155

    Απ: Φιλοξενία .NET control σε HTML

    μμμ... κάτι βρήκα!

    Note For security reasons, managed controls using the <OBJECT> tag and file access protocol in an HTML page are not supported. For example, the following <object> tag is not supported: classid="file:///c:/control.dll#control"

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpcondeployingcommonlanguageruntimeapplicationusingie55.asp
    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems