web-dev-qa-db-ja.com

C#WebサービスからWSDLファイルを生成する方法

次のようなWebServiceを作成しました。

[WebService(Namespace = "http://ns")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class GroupManagerService : WebService
{
    public GroupManagerService()
    {
    }

    [WebMethod]
    public bool MyMethod(string loginname, string country)
    {
        // code here...
    }
}

実行中のサービスに接続せずに、このコードのWSDLファイルを生成することは可能ですか?検索したところ、SvcUtil.exewsdl.exeに関する情報が見つかりましたただし、これらは、実行中のWebServiceからWSDLを取得する場合にのみ機能します。

Javaの場合、Java2wsdlというツールがあり、 c#と同等?)



:Update:
この質問のコンテキストは、SharePointの_vti_binフォルダーのWSPBuilderを使用して展開する必要があるSharePointに新しいCustomWebServiceを追加することです。 SharePoint.SEの my post も参照してください。

また、(msbuildコマンドを使用して) 'MyServicewsdl.aspx' 'MyServicedisco.wsdl'を自動的に生成したい_vti_binフォルダーに配置する必要があります。



何か欠けていることがありますか? svcutil.exeからの出力は次のとおりです。

bin\Debug>SvcUtil.exe MyWebService.dll
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 3.0.4506.2152]
Copyright (c) Microsoft Corporation.  All rights reserved.

Generating metadata files...
Warning: No metadata files were generated. No service contracts were exported.
 To export a service, use the /serviceName option. To export data contracts, spe
cify the /dataContractOnly option. This can sometimes occur in certain security
contexts, such as when the Assembly is loaded over a UNC network file share. If
this is the case, try copying the Assembly into a trusted environment and runnin
g it.
17
Stef Heyenrath

1つ以上のWebServicesを含むコンパイル済みのc#アセンブリ(dll)からWSDLファイルを生成できるツールを作成しました。 /MyWebService.asmx?wsdlを使用してWSDLを取得できるように、通常、.asmxをホストする実行中のサービス(IISまたはその他)が必要です。

このツールは、リフレクションを使用してWSDLファイルを生成し、アセンブリ(dll)からすべての情報を取得します。

ダウンロードは https://github.com/StefH/WSDLGenerator にあります

15
Stef Heyenrath

見る svcutil /?

                          -= METADATA EXPORT =-

Description: svcutil.exe can export metadata for services, contracts and data types in compiled assemblies. To
    export metadata for a service, you must use the /serviceName option to indicate the service you would like
    to export. To export all Data Contract types within an Assembly use the /dataContractOnly option. By
    default metadata is exported for all Service Contracts in the input assemblies.

Syntax: svcutil.exe [/t:metadata] [/serviceName:<serviceConfigName>] [/dataContractOnly] <assemblyPath>*

 <assemblyPath> - The path to an Assembly that contains services, contracts or Data Contract types to be
                  exported. Standard command-line wildcards can be used to provide multiple files as input.

Options:

 /serviceName:<serviceConfigName> - The config name of a service to export. If this option is used, an
                                    executable Assembly with an associated config file must be passed as
                                    input. Svcutil will search through all associated config files for the
                                    service configuration. If the config files contain any extension types,
                                    the assemblies containing these types must either be in the GAC or
                                    explicitly provided using the /r option.
 /reference:<file path>           - Add the specified Assembly to the set of assemblies used for resolving
                                    type references. If you are exporting or validating a service that uses
                                    3rd-party extensions (Behaviors, Bindings and BindingElements) registered
                                    in config use this option to locate extension assemblies that are not in
                                    the GAC.  (Short Form: /r)
 /dataContractOnly                - Operate on Data Contract types only. Service Contracts will not be
                                    processed. (Short Form: /dconly)
 /excludeType:<type>              - The fully-qualified or Assembly-qualified name of a type to exclude from
                                    export. This option can be used when exporting metadata for a service or a
                                    set of service contracts to exclude types from being exported. This option
                                    cannot be used with the /dconly option. (Short Form: /et)
5
John Saunders

Svcutil.exeは、サービスが停止した状態で確実にWSDLを生成します。正しい使用法は、svcutil your.executable.dll(exe)です。私はこれをたくさん使用しているので、WSDLが生成されると確信しています。

2
jpsstavares