Αναγν. άρθρου: 313984 - Τελευταία αναθεώρηση: Δευτέρα, 20 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0

Σφάλμα χρόνου εκτέλεσης Visual Basic Winsock ελέγχου 429 και κλιμάκωση

Συμβουλή συστήματοςΑυτό το άρθρο ισχύει για διαφορετικό λειτουργικό σύστημα από αυτό που χρησιμοποιείτε. Το περιεχόμενο του άρθρου που ενδέχεται να μην σας αφορά έχει απενεργοποιηθεί.

Σε αυτήν τη σελίδα

Ανάπτυξη όλων | Σύμπτυξη όλων

Περίληψη

Το στοιχείο ελέγχου Microsoft Winsock (Mswinsck.ocx) δεν έχει σχεδιαστεί για να δημιουργηθεί δυναμικά κατά το χρόνο εκτέλεσης. Για να χρησιμοποιήσετε αυτό το στοιχείο ελέγχου, τοποθετήστε το σε μια φόρμα κατά το χρόνο σχεδίασης. Διαφορετικά, ενδέχεται να λάβετε το σφάλμα χρόνου εκτέλεσης 429, "δεν είναι δυνατή η δημιουργία αντικειμένου από το στοιχείο ActiveX."

Επίσης, μην χρησιμοποιείτε το στοιχείο ελέγχου Winsock σε περιβάλλοντα διακομιστή, όπως με Microsoft Internet Information Server (IIS) και Microsoft COM +, όπου μπορεί να απαιτείται δυνατότητα κλιμάκωσης.

Περισσότερες πληροφορίες

Σφάλμα χρόνου εκτέλεσης 429

Μια εφαρμογή που δημιουργεί το στοιχείο ελέγχου Winsock δυναμικά κατά το χρόνο εκτέλεσης, μέσω της χρήσης πρώιμη σύνδεσης εκτελείται κατά το χρόνο σχεδίασης ενδέχεται να αποτύχει κατά το χρόνο εκτέλεσης με σφάλματος 429, εάν η εφαρμογή εκτελείται σε έναν υπολογιστή nondevelopment (έναν υπολογιστή που δεν έχει εγκατεστημένο το Visual Basic):
Σφάλμα χρόνου εκτέλεσης '429':
Δεν είναι δυνατή η δημιουργία αντικειμένου από το στοιχείο ActiveX. (Run-time error '429': ActiveX component can't create object.)
Το σφάλμα παρουσιάζεται επειδή ο υπολογιστής προορισμού δεν διαθέτει τις πληροφορίες άδειας χρήσης για τα αντικείμενα του στοιχείου ελέγχου που χρησιμοποιούνται στην εφαρμογή. Ίσως προσπαθείτε να ορίσετε την αναφορά έργου κάντε MSWINSCK.ocx και, στη συνέχεια, δημιουργήστε ένα πακέτο ανάπτυξης, μέσω της χρήσης του πακέτου και ο οδηγός ανάπτυξης. Αυτό θα δημιουργήσει ένα πακέτο εγκατάστασης που περιέχει τη σωστή έκδοση του στοιχείου ελέγχου Winsock. Ωστόσο, το κλειδί άδειας χρήσης για το στοιχείο ελέγχου θα δεν θα μεταγλωττιστεί σε μια εφαρμογή, εκτός εάν τοποθετείται μια παρουσία του στοιχείου ελέγχου σε μια φόρμα. When you try to instantiate the objects at run time, the application has no way to provide the license key, and the code will fail. For example, the following code will run properly at design time, but will fail at run time on computers that do not have Visual Basic installed:
Dim myWinSock As MSWinsockLib.Winsock

Sub Main()
    ' Early binding does not work
    Set myWinSock = New MSWinsockLib.Winsock

    myWinSock.LocalPort = 5432
    
    myWinSock.Listen
    
    MsgBox ("Listening!")
    
    myWinSock.Close
End Sub
Therefore, you must provide an instance of the Winsock control on a form so that Visual Basic can compile the license information into the application. You can make the form hidden if necessary. To do this, set the form'sΟρατόproperty to "False." You can then prepare for deployment. The following code snippet demonstrates the method:
Dim myWinsock As MSWinsockLib.Winsock

Sub Main()
    ' Form1 is hidden
    Set myWinsock = Form1.myWinsock

    myWinsock.LocalPort = 5432
    
    myWinsock.Listen
    
    MsgBox ("Listening!")
    
    myWinsock.Close
End Sub
				
As an alternative, you can place a Winsock control object on the visual designer of a UserControl object as a constituent control, which is usually done to extend the functionality of the Winsock control or to subclass. However, this approach does not address the licensing requirement. For an application to use the wrapper object to run successfully at run time, the wrapper object must ultimately be on a form.

Δυνατότητα κλιμάκωσης

The Winsock control is designed for use in client or light-load server applications. Microsoft does not support the use of the control in multithreaded server environments, especially in IIS and COM+, where scalability may be important. Using this control in such an environment may cause unpredicatible issues including deadlocks. Microsoft recommends that you consider use of alternative technologies such as the Winsock API and the IO Completion Port (IOCP) in these cases.

Αναφορές

Για πρόσθετες πληροφορίες, κάντε κλικ στους αριθμούς των άρθρων παρακάτω, για να προβάλετε τα άρθρα της Γνωσιακής Βάσης της Microsoft (Knowledge Base):
274754  (http://support.microsoft.com/kb/274754/EN-US/ ) INFO: Licensing Issues Related to User Controls Created with Visual Basic
241126  (http://support.microsoft.com/kb/241126/EN-US/ ) INFO: Dynamically Add UserControls That Require Run-Time Licenses
192800  (http://support.microsoft.com/kb/192800/EN-US/ ) ΠΛΗΡΟΦΟΡΙΕΣ: Θέματα σχεδίασης κατά τη χρήση IOCP σε ένα διακομιστή Winsock

Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Λέξεις-κλειδιά: 
kbdswnet2003swept kbapi kbctrl kbinfo kbnetwork kbwinsock kbmt KB313984 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:313984  (http://support.microsoft.com/kb/313984/en-us/ )