Verwenden des WCF-Monikers mit COM-ClientsUsing the WCF Moniker with COM Clients

In diesem Beispiel wird veranschaulicht, wie Webdienste mithilfe des Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)-Dienstmonikers in COM-Entwicklungsumgebungen wie Microsoft Office Visual Basic for Applications (Office VBA) oder Visual Basic 6.0 integriert werden.This sample demonstrates how to use the Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) service moniker to integrate Web services into COM-based development environments, such as Microsoft Office Visual Basic for Applications (Office VBA) or Visual Basic 6.0. Das Beispiel umfasst einen Windows Script Host-Client (.vbs), eine unterstützende Clientbibliothek (.dll) und eine Dienstbibliothek (.dll), die von Internetinformationsdienste (IIS) gehostet werden.This sample consists of a Windows Script Host client (.vbs), a supporting client library (.dll), and a service library (.dll) hosted by Internet Information Services (IIS). Der Dienst ist ein Rechnerdienst und der COM-Client ruft mathematische Operationen (Addieren, Subtrahieren, Multiplizieren und Dividieren) auf dem Dienst auf.The service is a calculator service and the COM client calls math operations—Add, Subtract, Multiply, and Divide—on the service. Die Clientaktivität ist in den Meldungsfeldfenstern sichtbar.Client activity is visible in the message box windows.

Hinweis

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.The set-up procedure and build instructions for this sample are located at the end of this topic.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your computer. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) - und WFWF -Beispiele herunterzuladen.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Services\Interop\COM

Der Dienst implementiert einen ICalculator-Vertrag, dessen Definition im folgenden Codebeispiel veranschaulicht wird.The service implements an ICalculator contract defined as shown in the following code example.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]  
public interface ICalculator  
{  
    [OperationContract]  
    double Add(double n1, double n2);  
    [OperationContract]  
    double Subtract(double n1, double n2);  
    [OperationContract]  
    double Multiply(double n1, double n2);  
    [OperationContract]  
    double Divide(double n1, double n2);  
}  

Im Beispiel werden die drei alternativen Ansätze für die Verwendung des Monikers veranschaulicht:The sample demonstrates the three alternative approaches for using the moniker:

  • Typisierter Vertrag: Der Vertrag wird auf dem Clientcomputer als für COM sichtbarer Typ registriert.Typed contract – The contract is registered as a COM visible type on the client computer.

  • WSDL-Vertrag: Der Vertrag wird in Form eines WSDL-Dokuments angegeben.WSDL contract – The contract is supplied in the form of a WSDL document.

  • Metadatenaustausch-Vertrag: Der Vertrag wird zur Laufzeit von einem MEX-Endpunkt (Metadata Exchange) abgerufen.Metadata Exchange contract – The contract is retrieved at runtime from a Metadata Exchange (MEX) endpoint.

Typisierter VertragTyped Contract

Um den Moniker mit einem typisierten Vertrag zu verwenden, müssen auf geeignete Weise attributierte Typen für den Dienstvertrag mit COM registriert werden.To use the moniker with a typed contract use, appropriately attributed types for the service contract must be registered with COM. Zunächst muss ein Client generiert werden, mithilfe der ServiceModel Metadata Utility Tool (Svcutil.exe).First, a client must be generated by using the ServiceModel Metadata Utility Tool (Svcutil.exe). Führen Sie den folgenden Befehl an einer Eingabeaufforderung im Clientverzeichnis aus, um den typisierten Proxy zu generieren.Run the following command from a command prompt in the client directory to generate the typed proxy.

svcutil.exe /n:http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples http://localhost/servicemodelsamples/service.svc /out:generatedClient.cs  

Diese Klasse muss in ein Projekt eingebunden werden, und das Projekt sollte so konfiguriert werden, dass es bei der Kompilierung eine für COM sichtbare, signierte Assembly generiert.This class must be included in a project and the project should be configured to generate a COM-visible, signed assembly when compiled. Das folgende Attribut muss in der Datei AssemblyInfo.cs enthalten sein.The following attribute should be included in the AssemblyInfo.cs file.

[assembly: ComVisible(true)]  

Registrieren Sie nach dem Erstellen des Projekts die für COM sichtbaren Typen mit regasm, wie im folgenden Beispiel veranschaulicht.After building the project, register the COM-visible types by using regasm as shown in the following example.

regasm.exe /tlb:CalcProxy.tlb client.dll  

Die erstellte Assembly sollte dem globalen Assemblycache hinzugefügt werden.The assembly that is created should be added to the Global Assembly Cache. Obwohl nicht streng erforderlich, wird hierdurch der Prozess vereinfacht, bei dem die Laufzeit die Assembly lokalisiert.Though not strictly required, this simplifies the process of the runtime locating the assembly. Mit dem folgenden Befehl wird die Assembly dem globalen Assemblycache hinzugefügt.The following command adds the assembly to the Global Assembly Cache.

gacutil.exe /i client.dll  

Hinweis

Der Dienstmoniker erfordert nur die Typregistrierung und verwendet nicht den Proxy für die Kommunikation mit dem Dienst.The service moniker requires only the type registration and does not use the proxy to communicate with the service.

Die ComCalcClient.vbs-Clientanwendung nutzt die GetObject-Funktion, um einen Proxy für den Dienst zu erstellen, wobei die Dienstmonikersyntax für die Festlegung von Adresse, Bindung und Vertrag für den Dienst verwendet wird.ComCalcClient.vbs client application uses the GetObject function to construct a proxy for the service, using the service moniker syntax to specify the address, binding, and contract for the service.

Set typedServiceMoniker = GetObject(  
"service4:address=http://localhost/ServiceModelSamples/service.svc, binding=wsHttpBinding,   
contractType={9213C6D2-5A6F-3D26-839B-3BA9B82228D3}")  

Die vom Moniker verwendeten Parameter legen Folgendes fest:The parameters used by the moniker specify:

  • Die Adresse des Dienstendpunkts.The address of the service endpoint.

  • Die Bindung, die der Client verwenden sollte, um eine Verbindung mit diesem Endpunkt herzustellen.The binding that the client should use to connect with that endpoint. In diesem Fall wird die vom System definierte wsHttpBinding verwendet. Allerdings können auch benutzerdefinierte Bindungen in den Clientkonfigurationsdateien definiert werden.In this case, the system-defined wsHttpBinding is used though custom bindings can be defined in client configuration files. Für die Verwendung mit dem Windows Script Host wird die benutzerdefinierte Bindung in einer Cscript.exe.config-Datei im gleichen Verzeichnis wie "Cscript.exe" definiert.For use with the Windows Script Host, the custom binding is defined in a Cscript.exe.config file in the same directory as Cscript.exe.

  • Der Typ des Vertrags, der vom Endpunkt unterstützt wird.The type of the contract that is supported at the endpoint. Dies ist der Typ, der oben generiert und registriert wurde.This is the type that was generated and registered above. Da ein Visual Basic-Skript keine stark typisierte COM-Umgebung bereitstellt, muss eine ID für den Vertrag festgelegt werden.Because Visual Basic script does not provide a strongly-typed COM environment, an identifier for the contract must be specified. Diese GUID ist die interfaceID aus "CalcProxy.tlb", die durch COM-Tools wie OLE/COM-Objektkatalog (OleView.exe) eingesehen werden kann.This GUID is the interfaceID from CalcProxy.tlb, which can be viewed by using COM tools such as the OLE/COM Object Viewer (OleView.exe). Für stark typisierte Umgebungen wie Office VBA oder Visual Basic 6.0 kann anstelle des Vertragsparameters ein expliziter Verweis auf die Typbibliothek hinzugefügt werden und daraufhin eine Deklaration des Typs des Proxyobjekts erfolgen.For strongly-typed environments such as Office VBA or Visual Basic 6.0, adding an explicit reference to the type library and then declaring the type of the proxy object can be used in place of the contract parameter. Auf diese Weise wird auch während der Clientanwendungsentwicklung IntelliSense-Unterstützung bereitgestellt.This also provides IntelliSense support during client application development.

Durch Erstellung der Proxyinstanz mit dem Dienstmoniker kann die Clientanwendung Methoden auf dem Proxy aufrufen. Dies führt dazu, dass die Dienstmonikerinfrastruktur die entsprechenden Dienstvorgänge aufruft.Having constructed the proxy instance with the service moniker, the client application can call methods on the proxy, which results in the service moniker infrastructure calling the corresponding service operations.

' Call the service operations using the moniker object  
WScript.Echo "Typed service moniker: 100 + 15.99 = " & typedServiceMoniker.Add(100, 15.99)  

Wenn Sie das Beispiel ausführen, werden die Antworten für den Vorgang in einem Windows Script Host-Meldungsfeldfenster angezeigt. Auf diese Weise wird gezeigt, wie ein COM-Client COM-Aufrufe mithilfe des typisierten Monikers vornimmt, um mit einem WCFWCF-Dienst zu kommunizieren. Trotz der Verwendung von COM in der Clientanwendung besteht die Kommunikation mit dem Dienst ausschließlich aus Webdienstaufrufen.Despite the use of COM in the client application, the communication with the service consists only of Web service calls.

WSDL-VertragWSDL Contract

Um den Moniker mit einem WSDL-Vertrag zu verwenden, ist keine Registrierung der Clientbibliothek erforderlich. Allerdings muss der WSDL-Vertrag für den Dienst über einen Out-of-Band-Mechanismus abgerufen werden, wie beispielsweise die Verwendung eines Browsers für den Zugriff auf den WSDL-Endpunkt des Diensts.To use the moniker with a WSDL contract, no client library registration is required but the WSDL contract for the service must be retrieved through an out-of-band mechanism such as using a browser to access the WSDL endpoint for the service. Der Moniker kann dann bei Ausführungszeit auf diesen Vertrag zugreifen.The moniker can then access that contract at execution time.

Die Clientanwendung ComCalcClient.vbs nutzt FileSystemObject, um auf die lokal gespeicherte WSDL-Datei zuzugreifen. Anschließend wird mithilfe der GetObject-Funktion ein Proxy für den Dienst erstellt.The ComCalcClient.vbs client application uses the FileSystemObject to access the locally saved WSDL file and then again uses the GetObject function to construct a proxy for the service.

' Open the WSDL contract file and read it all into the wsdlContract string  
Const ForReading = 1  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objFile = objFSO.OpenTextFile("serviceWsdl.xml", ForReading)  
wsdlContract = objFile.ReadAll  
objFile.Close  

' Create a string for the service moniker including the content of the WSDL contract file  
wsdlMonikerString = "service4:address='http://localhost/ServiceModelSamples/service.svc'"  
wsdlMonikerString = wsdlMonikerString + ", binding=WSHttpBinding_ICalculator, bindingNamespace='http://Microsoft.ServiceModel.Samples'"  
wsdlMonikerString = wsdlMonikerString + ", wsdl='" & wsdlContract & "'"  
wsdlMonikerString = wsdlMonikerString + ", contract=ICalculator, contractNamespace='http://Microsoft.ServiceModel.Samples'"  

' Create the service moniker object  
Set wsdlServiceMoniker = GetObject(wsdlMonikerString)  

Die vom Moniker verwendeten Parameter legen Folgendes fest:The parameters used by the moniker specify:

  • Die Adresse des Dienstendpunkts.The address of the service endpoint.

  • Die Bindung, die der Client verwenden sollte, um eine Verbindung mit diesem Endpunkt herzustellen, und der Namespace, in dem diese Bindung definiert ist.The binding that the client should use to connect with that endpoint and the namespace in which that binding is defined. In diesem Fall wird wsHttpBinding_ICalculator verwendet.In this case, the wsHttpBinding_ICalculator is used.

  • Die WSDL, die den Vertrag definiert.The WSDL that defines the contract. In diesem Fall ist dies die Zeichenfolge, die aus der Datei "serviceWsdl.xml" gelesen wurde.In this case this is the string that has been read from the serviceWsdl.xml file.

  • Der Name und Namespace des Vertrags.The name and namespace of the contract. Diese Identifikation ist erforderlich, da die WSDL möglicherweise mehr als einen Vertrag enthält.This identification is required because the WSDL may contain more than one contract.

    Hinweis

    Standardmäßig generieren WCFWCF-Dienste separate WSDL-Dateien für jeden verwendeten Namespace.By default, WCFWCF services generate separate WSDL files for each namespace that the use. Diese werden mit der Verwendung des WSDL-Importkonstrukts verknüpft.These are linked with the use of the WSDL import construct. Da der Moniker eine einzige WSDL-Definition erwartet, muss der Dienst entweder einen einzigen Namespace verwenden (wie in diesem Beispiel gezeigt) oder die separaten Dateien müssen manuell zusammengeführt werden.Because the moniker expects a single WSDL definition, the service must either use a single namespace as demonstrated in this sample or the separate files must be manually merged.

Durch Erstellung der Proxyinstanz mit dem Dienstmoniker kann die Clientanwendung Methoden auf dem Proxy aufrufen. Dies führt dazu, dass die Dienstmonikerinfrastruktur die entsprechenden Dienstvorgänge aufruft.Having constructed the proxy instance with the service moniker, the client application can call methods on the proxy, which results in the service moniker infrastructure calling the corresponding service operations.

' Call the service operations using the moniker object  
WScript.Echo "WSDL service moniker: 145 - 76.54 = " & wsdlServiceMoniker.Subtract(145, 76.54)  

Wenn Sie das Beispiel ausführen, werden die Antworten für den Vorgang in einem Windows Script Host-Meldungsfeldfenster angezeigt. Auf diese Weise wird gezeigt, wie ein COM-Client COM-Aufrufe mithilfe des Monikers mit einem WSDL-Vertrag vornimmt, um mit einem WCFWCF-Dienst zu kommunizieren.This demonstrates a COM client making COM calls using the moniker with a WSDL contract to communicate with a WCFWCF service.

Metadatenaustausch-VertragMetadata Exchange Contract

Um den Moniker mit einem MEX-Vertrag zu verwenden, ist wie bei einem WSDL-Vertrag keine Clientregistrierung erforderlich.To use the moniker with a MEX contract, as with the WSDL contract, no client registration is required. Der Vertrag für den Dienst wird bei Ausführungszeit durch die interne Verwendung von Metadatenaustausch abgerufen.The contract for the service is retrieved at execution time through the internal use of Metadata Exchange.

Die Clientanwendung ComCalcClient.vbs verwendet wieder die GetObject-Funktion, um einen Proxy für den Dienst zu erstellen.The ComCalcClient.vbs client application again uses the GetObject function to construct a proxy for the service.

' Create a string for the service moniker specifying the address to retrieve the service metadata from  
mexMonikerString = "service4:mexAddress='http://localhost/servicemodelsamples/service.svc/mex'"  
mexMonikerString = mexMonikerString + ", address='http://localhost/ServiceModelSamples/service.svc'"  
mexMonikerString = mexMonikerString + ", binding=WSHttpBinding_ICalculator, bindingNamespace='http://Microsoft.ServiceModel.Samples'"  
mexMonikerString = mexMonikerString + ", contract=ICalculator, contractNamespace='http://Microsoft.ServiceModel.Samples'"  

' Create the service moniker object  
Set mexServiceMoniker = GetObject(mexMonikerString)  

Die vom Moniker verwendeten Parameter legen Folgendes fest:The parameters used by the moniker specify:

  • Die Adresse des Metadatenaustausch-Endpunkts des Diensts.The address of the service metadata exchange endpoint.

  • Die Adresse des Dienstendpunkts.The address of the service endpoint.

  • Die Bindung, die der Client verwenden sollte, um eine Verbindung mit diesem Endpunkt herzustellen, und der Namespace, in dem diese Bindung definiert ist.The binding that the client should use to connect with that endpoint and the namespace in which that binding is defined. In diesem Fall wird wsHttpBinding_ICalculator verwendet.In this case, the wsHttpBinding_ICalculator is used.

  • Der Name und Namespace des Vertrags.The name and namespace of the contract. Diese Identifikation ist erforderlich, da die WSDL möglicherweise mehr als einen Vertrag enthält.This identification is required because the WSDL may contain more than one contract.

Durch Erstellung der Proxyinstanz mit dem Dienstmoniker kann die Clientanwendung Methoden auf dem Proxy aufrufen. Dies führt dazu, dass die Dienstmonikerinfrastruktur die entsprechenden Dienstvorgänge aufruft.Having constructed the proxy instance with the service moniker, the client application can call methods on the proxy, which results in the service moniker infrastructure calling the corresponding service operations.

' Call the service operations using the moniker object  
WScript.Echo "MEX service moniker: 9 * 81.25 = " & mexServiceMoniker.Multiply(9, 81.25)  

Wenn Sie das Beispiel ausführen, werden die Antworten für den Vorgang in einem Windows Script Host-Meldungsfeldfenster angezeigt. Das Beispiel veranschaulicht, wie ein COM-Client unter Verwendung des Monikers mit einem MEX-Vertrag COM-Aufrufe vornimmt, um mit einem WCFWCF-Dienst zu kommunizieren.This demonstrates a COM client making COM calls using the moniker with a MEX contract to communicate with a WCFWCF service.

So richten Sie das Beispiel ein und erstellen esTo set up and build the sample

  1. Stellen Sie sicher, dass Sie ausgeführt haben die Setupprozedur für die Windows Communication Foundation-Beispiele zum einmaligen.Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Um die C#- oder Visual Basic .NET-Edition der Projektmappe zu erstellen, befolgen Sie die unter Building the Windows Communication Foundation Samplesaufgeführten Anweisungen.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  3. Öffnen Sie an einer Visual StudioVisual Studio-Eingabeaufforderung den Ordner \client\bin unter dem sprachspezifischen Ordner.From a Visual StudioVisual Studio command prompt, open the \client\bin folder, under the language-specific folder.

    Hinweis

    Wenn Sie Windows VistaWindows Vista, Windows Server 2008Windows Server 2008, Windows 7 oder Windows Server 2008 R2 verwenden, müssen Sie den Befehl mit Administratorberechtigungen ausführen.If you are using Windows VistaWindows Vista, Windows Server 2008Windows Server 2008, Windows 7, or Windows Server 2008 R2, make sure that you run the command prompt with administrator privileges.

  4. Geben Sie im tlbexp.exe client.dll /out:CalcProxy.tlb auf die Dll in eine Tlb-Datei exportieren.Type in tlbexp.exe client.dll /out:CalcProxy.tlb to export the dll to a tlb file. Eventuell wird eine "Typbibliothekexporter-Warnung" ausgegeben. Diese stellt jedoch kein Problem dar, da der generische Typ nicht benötigt wird.A "Type library exporter warning" is expected but is not an issue because the generic type is not required.

  5. Geben Sie im regasm.exe /tlb:CalcProxy.tlb client.dll auf die Typen bei COM zu registrieren.Type in regasm.exe /tlb:CalcProxy.tlb client.dll to register the types with COM. Eventuell wird eine "Typbibliothekexporter-Warnung" ausgegeben. Diese stellt jedoch kein Problem dar, da der generische Typ nicht benötigt wird.A "Type library exporter warning" is expected but is not an issue because the generic type is not required.

  6. Geben Sie in gacutil.exe /i client.dll um die Assembly im globalen Assemblycache hinzuzufügen.Type in gacutil.exe /i client.dll to add the assembly to the Global Assembly Cache.

So führen Sie das Beispiel auf demselben Computer ausTo run the sample on the same computer

  1. Test, den Sie den Dienst mithilfe eines Browsers durch Eingabe in der folgenden Adresse zugreifen können: http://localhost/servicemodelsamples/service.svc.Test that you can access the service using a browser by typing in the following address: http://localhost/servicemodelsamples/service.svc. Als Antwort sollte eine Bestätigungsseite angezeigt werden.A confirmation page should be displayed in response.

  2. Führen Sie die Datei "ComCalcClient.vbs" aus dem Ordner "\client" unter dem sprachspezifischen Ordner aus.Run ComCalcClient.vbs from \client, from under the language-specific folder. Die Clientaktivität wird in den Meldungsfeldfenstern angezeigt.Client activity is displayed in message box windows.

  3. Wenn Client und Dienst nicht miteinander kommunizieren können, finden Sie unter Tipps zur Problembehandlung.If the client and service are not able to communicate, see Troubleshooting Tips.

So führen Sie das Beispiel computerübergreifend ausTo run the sample across computers

  1. Erstellen Sie auf dem Dienstcomputer ein virtuelles Verzeichnis mit dem Namen ServiceModelSamples.On the service computer, create a virtual directory named ServiceModelSamples. Zum Erstellen des Festplattenverzeichnisses und des virtuellen Verzeichnisses kann das im Beispiel enthaltene Skript Setupvroot.bat verwendet werden.The Setupvroot.bat script included with the sample can be used to create the disk directory and virtual directory.

  2. Kopieren Sie die Dienstprogrammdateien aus %SystemDrive%\Inetpub\wwwroot\servicemodelsamples in das virtuelle Verzeichnis ServiceModelSamples auf dem Dienstcomputer.Copy the service program files from %SystemDrive%\Inetpub\wwwroot\servicemodelsamples to the ServiceModelSamples virtual directory on the service computer. Stellen Sie sicher, dass Sie die Dateien in das Verzeichnis \bin einfügen.Be sure to include the files in the \bin directory.

  3. Kopieren Sie die Skriptdatei aus dem Ordner \client (unterhalb des sprachspezifischen Ordners) auf den Clientcomputer.Copy the client script file from the \client folder, under the language-specific folder, to the client computer.

  4. Ändern Sie in der Skriptdatei den Adresswert der Endpunktdefinition, sodass dieser mit der neuen Adresse Ihres Diensts übereinstimmt.In the script file, change the address value of the endpoint definition to match the new address of your service. Ersetzen Sie alle Verweise auf localhost in der Adresse durch einen vollqualifizierten Domänennamen.Replace any references to "localhost" with a fully-qualified domain name in the address.

  5. Kopieren Sie die WSDL-Datei auf den Clientcomputer.Copy the WSDL file to the client computer. Ersetzen Sie in der WSDL-Datei serviceWsdl.xml alle Verweise auf localhost in der Adresse durch einen vollqualifizierten Domänennamen.In the WSDL file, serviceWsdl.xml, replace any references to "localhost" with a fully-qualified domain name in the address.

  6. Kopieren Sie die Bibliothek Client.dll aus dem Ordner \client\bin (unterhalb des sprachspezifischen Ordners) in ein Verzeichnis auf dem Clientcomputer.Copy the Client.dll library from the \client\bin folder, under the language-specific folder, to a directory on the client computer.

  7. Navigieren Sie an einer Eingabeaufforderung zu diesem Zielverzeichnis auf dem Clientcomputer.From a command prompt, navigate to that destination directory on the client computer. Wenn Sie Windows VistaWindows Vista oder Windows Server 2008Windows Server 2008 verwenden, stellen Sie sicher, dass Sie die Eingabeaufforderung als Administrator ausführen.If using Windows VistaWindows Vista or Windows Server 2008Windows Server 2008, make sure to run the command prompt as Administrator.

  8. Geben Sie im tlbexp.exe client.dll /out:CalcProxy.tlb auf die Dll in eine Tlb-Datei exportieren.Type in tlbexp.exe client.dll /out:CalcProxy.tlb to export the dll to a tlb file. Eventuell wird eine "Typbibliothekexporter-Warnung" ausgegeben. Diese stellt jedoch kein Problem dar, da der generische Typ nicht benötigt wird.A "Type library exporter warning" is expected but is not an issue because the generic type is not required.

  9. Geben Sie im regasm.exe /tlb:CalcProxy.tlb client.dll auf die Typen bei COM zu registrieren.Type in regasm.exe /tlb:CalcProxy.tlb client.dll to register the types with COM. Stellen Sie sicher, dass der Pfad zu dem Ordner mit vorsieht regasm.exe vor dem Ausführen des Befehls.Ensure that path has been set to the folder that contains regasm.exe before you run the command.

  10. Geben Sie in gacutil.exe /i client.dll um die Assembly im globalen Assemblycache hinzuzufügen.Type in gacutil.exe /i client.dll to add the assembly to the Global Assembly Cache. Stellen Sie sicher, dass der Pfad zu dem Ordner mit vorsieht gacutil.exe vor dem Ausführen des Befehls.Ensure that path has been set to the folder that contains gacutil.exe before you run the command.

  11. Testen Sie, ob Sie mit einem Browser vom Clientcomputer auf den Dienst zugreifen können.Test that you can access the service from the client computer using a browser.

  12. Starten Sie auf dem Clientcomputer ComCalcClient.vbs.On the client computer, launch ComCalcClient.vbs.

So stellen Sie den Zustand vor Ausführung des Beispiels wieder herTo clean up after the sample

  • Entfernen Sie aus Sicherheitsgründen die Definition des virtuellen Verzeichnisses und die in den Setupschritten gewährten Berechtigungen, wenn Sie die Beispiele abgeschlossen haben.For security purposes, remove the virtual directory definition and permissions granted in the setup steps when you are finished with the samples.

Siehe auchSee Also