Aracılığıyla paylaş


Building the Windows Communication Foundation Samples

The Windows Communication Foundation (WCF) samples can be built using Visual Studio 2010 or using the msbuild command from the command line. Both procedures are described in this topic.

Note

Before building or running any of the WCF samples, ensure you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

To build the sample using a command prompt

  1. Open the Visual Studio 2010 command prompt with administrator privileges and navigate to the language-specific subdirectory under the directory location where you installed the sample.

  2. Type msbuild at the command line. The client program files are built to client\bin and the service program files are built to service\bin. If the service is hosted by Internet Information Services (IIS), the service program files are also copied to the servicemodelsamples directory and its \bin subdirectory.

Note

You must set the ACLs on %systemdrive%\inetpub\wwwroot to grant modify permissions to the account under which you are running. Otherwise some post build events fail. Alternatively, you can leave the ACLs as they are and run the SDK command prompt as administrator.

To build the sample using Visual Studio

  1. If you are using Windows Vista, Windows Server 2008, Windows 7, or Windows Server 2008 R2, and running Visual Studio 2010, you must run Visual Studio with elevated permission. To do so, right-click the icon on the Start menu and then click Run as administrator.

  2. From the File menu in Visual Studio, click Open, then click Project/Solution. Navigate to the language-specific subdirectory under the directory in which you installed the sample, and double-click the .sln file icon to open the solution in Visual Studio.

  3. In the Build menu, select Rebuild Solution. The client program files are built to client\bin and the service program files are built to service\bin. If the service is hosted in IIS, the service program files are also copied to the servicemodelsamples directory and its \bin subdirectory.

Note

You must set the ACLs on %systemdrive%\inetpub\wwwroot to grant modify permissions to the account under which you are running. Otherwise some post build events fail. Alternatively, you can leave the ACLs as they are and run the SDK command prompt or Visual Studio as administrator. Some Visual Studio actions (such as attaching a debugger to the ASP.Net worker process) also require administrative privileges.

Setup Batch Files and Scripts

Setup.exe and Cleanup.exe batch files and scripts should be run from a Visual Studio command prompt. Several set up and clean up files perform tasks that require administrative privileges and should be launched with administrator privileges.

Important Security Information about Metadata Endpoints

To prevent unintentional disclosure of potentially sensitive service metadata, the default configuration for Windows Communication Foundation (WCF) services disables metadata publishing. This behavior is secure by default, but also means that you cannot use a metadata import tool (such as Svcutil.exe) to generate the client code required to call the service unless the service’s metadata publishing behavior is explicitly enabled in configuration. To make experimenting with the samples easier, almost all samples expose an unsecured metadata publishing endpoint. Such endpoints are potentially available to anonymous unauthenticated consumers and care must be taken before deploying such endpoints to ensure that publicly disclosing a service’s metadata is appropriate. For more information about publishing service metadata, see the Metadata Publishing Behavior sample. See the Custom Secure Metadata Endpoint sample for a sample securing a metadata endpoint.

Exception Handling

Generally speaking these samples do not include exception handling to keep the code focused on the subject of the sample. For more information about exception handling, see the Expected Exceptions sample.

Regenerating Clients and Configuration with Svcutil

You can use the ServiceModel Metadata Utility Tool (Svcutil.exe) to regenerate client code and configuration for most of the samples. Some samples require manually edited configuration. For example, if you use Svcutil.exe to regenerate the configuration for a sample that uses client certificate credentials, you must manually specify the credentials previously configured. Some samples use specific Svcutil.exe options to affect the generated code, these options are specified in the specific sample topics.

To regenerate the client and configuration files

  1. Open an SDK command prompt and navigate to the language-specific subdirectory under the directory location where you installed the sample.

  2. If the service is a Web-hosted type, use the following command.

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

    If the service is a self-hosted type the following command.

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

    Replace https://localhost:8000/ServiceModelSamples/service.svc/mex with the address of the self-hosted service's mex endpoint.

    To generate the client in a Visual Basic type, use the following command.

    svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" https://localhost/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb
    

    If the service is a self-hosted type, use the following command.

    svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" https://localhost:8000/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb
    

    Note

    To skip the generation of client configuration add the /noConfig option.

See Also

Concepts

Running the Windows Communication Foundation Samples
ServiceModel Metadata Utility Tool (Svcutil.exe)