IWsdlExportExtension 인터페이스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
사용자 지정 메타데이터를 내보낼 수 있는 엔드포인트 또는 계약 동작을 정의합니다.
public interface class IWsdlExportExtension
public interface IWsdlExportExtension
type IWsdlExportExtension = interface
Public Interface IWsdlExportExtension
- 파생
예제
다음 코드 예제에서는 WSDL 파일에 사용자 지정 설명서 특성을 WSDL 주석으로 추가하는 를 보여 IWsdlExportExtension 줍니다.
public void ExportContract(WsdlExporter exporter, WsdlContractConversionContext context)
{
Console.WriteLine("Inside ExportContract");
if (context.Contract != null)
{
// Inside this block it is the contract-level comment attribute.
// This.Text returns the string for the contract attribute.
// Set the doc element; if this isn't done first, there is no XmlElement in the
// DocumentElement property.
context.WsdlPortType.Documentation = string.Empty;
// Contract comments.
XmlDocument owner = context.WsdlPortType.DocumentationElement.OwnerDocument;
XmlElement summaryElement = Formatter.CreateSummaryElement(owner, this.Text);
context.WsdlPortType.DocumentationElement.AppendChild(summaryElement);
foreach (OperationDescription op in context.Contract.Operations)
{
Operation operation = context.GetOperation(op);
object[] opAttrs = op.SyncMethod.GetCustomAttributes(typeof(WsdlDocumentationAttribute), false);
if (opAttrs.Length == 1)
{
string opComment = ((WsdlDocumentationAttribute)opAttrs[0]).Text;
// This.Text returns the string for the operation-level attributes.
// Set the doc element; if this isn't done first, there is no XmlElement in the
// DocumentElement property.
operation.Documentation = String.Empty;
// Operation C# triple comments.
XmlDocument opOwner = operation.DocumentationElement.OwnerDocument;
XmlElement newSummaryElement = Formatter.CreateSummaryElement(opOwner, opComment);
operation.DocumentationElement.AppendChild(newSummaryElement);
// Get returns information
ParameterInfo returnValue = op.SyncMethod.ReturnParameter;
object[] returnAttrs = returnValue.GetCustomAttributes(typeof(WsdlParameterDocumentationAttribute), false);
if (returnAttrs.Length == 1)
{
// <returns>text.</returns>
XmlElement returnsElement =
Formatter.CreateReturnsElement(
opOwner,
((WsdlParameterDocumentationAttribute)returnAttrs[0]).ParamComment
);
operation.DocumentationElement.AppendChild(returnsElement);
}
// Get parameter information.
ParameterInfo[] args = op.SyncMethod.GetParameters();
for (int i = 0; i < args.Length; i++)
{
object[] docAttrs
= args[i].GetCustomAttributes(typeof(WsdlParameterDocumentationAttribute), false);
if (docAttrs.Length != 0)
{
// <param name="Int1">Text.</param>
XmlElement newParamElement = opOwner.CreateElement("param");
XmlAttribute paramName = opOwner.CreateAttribute("name");
paramName.Value = args[i].Name;
newParamElement.InnerText
= ((WsdlParameterDocumentationAttribute)docAttrs[0]).ParamComment;
newParamElement.Attributes.Append(paramName);
operation.DocumentationElement.AppendChild(newParamElement);
}
}
}
}
}
설명
개체에서 내보낸 WsdlExporter WSDL(Web Services Description Language)을 수정하고 확장하려면 엔드포인트, 계약 또는 작업 동작(, IEndpointBehavior또는 IOperationBehavior를 구현하는 개체)에서 인터페이스를 구현 IContractBehaviorIWsdlExportExtension 하고 , Behaviors또는 Behaviors 속성에 동작을 Behaviors추가합니다. 또한 에서 BindingElement를 구현 IWsdlExportExtension 할 수도 있습니다.
참고
IWsdlExportExtension 구현은 로 IServiceBehavior구현된 경우 호출되지 않습니다.
IWsdlExportExtension 는 WCF(Windows Communication Foundation)가 사용자 지정 바인딩 정책 어설션을 WSDL 내의 적절한 요소로 내보내더라도 사용자 지정 정책 어설션을 내보내지 않습니다. 사용자 지정 정책 어설션을 내보내려면 인터페이스를 구현합니다 IPolicyExportExtension .
메타데이터 게시 프로세스는 를 호출 WsdlExporter.ExportEndpoints 하여 시작하여 각 엔드포인트에 대해 를 호출 WsdlExporter.ExportEndpoint 합니다.
엔드포인트는 먼저 계약을 내보내서 내보냅니다. 계약을 내보낼 때 는 System.ServiceModel.Description.WsdlExporter 계약의 모든 IWsdlExportExtension 구현 및 해당 계약의 작업 동작에 대해 메서드를 호출 IWsdlExportExtension.ExportContract 합니다. 와일드카드 작업을 사용하는 작업은 메타데이터에서 내보내지지 않으므로 IWsdlExportExtension 이러한 작업에 대한 작업 동작에 대한 구현은 내보내지지 않습니다.
계약을 내보낸 후 포트 및 바인딩이 내보내지고 내보낸 정책 식이 연결됩니다.
ExportContract 및 ExportEndpoint 메서드는 모두 에 대한 액세스를 WsdlExporter 제공하므로 구현에서 IWsdlExportExtension 속성을 통해 Errors 복구 가능한 오류 및 경고를 보고할 수 있습니다. 두 메서드에 전달된 컨텍스트 개체는 내보낸 WSDL 요소에서 및 ServiceEndpoint 개체의 ContractDescription 속성으로 편리한 매핑을 제공합니다.
구현이 IWsdlExportExtension 내보내기 시 예외를 throw하는 경우 생성된 메타데이터가 일관되지 않은 상태이며 개체를 WsdlExporter 삭제해야 합니다.
참고
기본 제공 serializer가 서비스 설명을 채웁니다.
메서드
ExportContract(WsdlExporter, WsdlContractConversionContext) |
계약에 대해 생성된 WSDL(웹 서비스 설명 언어)에 사용자 지정 WSDL 요소를 씁니다. |
ExportEndpoint(WsdlExporter, WsdlEndpointConversionContext) |
엔드포인트에 대해 생성된 WSDL(웹 서비스 설명 언어)에 사용자 지정 WSDL 요소를 씁니다. |
적용 대상
.NET