ServiceModel Meta Veri Yardımcı Programracı (Svcutil.exe)
ServiceModel Meta Veri Yardımcı Programı aracı meta veri belgelerinden hizmet modeli kodu ve hizmet modeli kodundan meta veri belgeleri oluşturmak için kullanılır.
SvcUtil.exe
ServiceModel Meta Veri Yardımcı Programı Aracı, Windows SDK yükleme konumunda, özellikle %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Bin konumunda bulunabilir.
İşlevler
Aşağıdaki tabloda, bu araç tarafından sağlanan çeşitli işlevler ve nasıl kullanıldığının açıklandığı ilgili konu özetlenir:
Görev | Konu |
---|---|
Çalışan hizmetlerden veya statik meta veri belgelerinden kod oluşturur. | Hizmet Meta Verilerinden WCF İstemcisi Oluşturma |
Meta veri belgelerini derlenmiş koddan dışarı aktarır. | Nasıl yapılır: Meta Verileri Derlenmiş Hizmet Kodundan Dışarı Aktarmak için Svcutil.exe Kullanma |
Derlenmiş hizmet kodunu doğrular. | Nasıl yapılır: Derlenmiş Hizmet Kodunu Doğrulamak için Svcutil.exe Kullanma |
Çalışan hizmetlerden meta veri belgelerini indirir. | Nasıl yapılır: Meta Veri Belgelerini İndirmek için Svcutil.exe Kullanma |
Serileştirme kodu oluşturur. | Nasıl yapılır: XmlSerializer Kullanarak WCF İstemci Uygulamalarının Başlangıç Zamanlarını İyileştirme |
Dikkat
Svcutil, parametre olarak sağlanan adlar aynıysa disk üzerindeki mevcut dosyaların üzerine yazar. Bu kod dosyalarını, yapılandırmayı veya meta veri dosyalarını içerebilir. Kod ve yapılandırma dosyaları oluştururken bunu önlemek için anahtarını kullanın /mergeConfig
.
Buna ek olarak, /r
başvuru türlerine yönelik ve /ct
anahtarları veri sözleşmeleri oluşturmaya yöneliktir. Bu anahtarlar XmlSerializer kullanılırken çalışmaz.
Timeout
Meta veriler alınırken aracın beş dakikalık zaman aşımı vardır. Bu zaman aşımı yalnızca ağ üzerinden meta verileri almak için geçerlidir. Bu meta verilerin işlenmesi için geçerli değildir.
Çoklu hedefleme
Araç çoklu hedeflemeyi desteklemez. svcutil.exe'dan bir .NET Framework 4 yapıtı oluşturmak istiyorsanız , .NET Framework 4 SDK'sından svcutil.exe kullanın. .NET Framework 3.5 yapıtı oluşturmak için .NET Framework 3.5 SDK'sından yürütülebilir dosyayı kullanın.
WSDL Belgelerine Erişme
Bir güvenlik belirteci hizmetine (STS) başvuru içeren bir WSDL belgesine erişmek için Svcutil kullandığınızda, Svcutil STS'ye bir WS-MetadataExchange çağrısı yapar. Ancak hizmet, WS-MetadataExchange veya HTTP GET kullanarak WSDL belgelerini kullanıma açabilir. Bu nedenle, STS yalnızca HTTP GET kullanarak WSDL belgesini kullanıma verdiyse, WinFX'te yazılmış bir istemci başarısız olur. .NET Framework 3.5'te yazılan istemciler için Svcutil, STS WSDL'yi edinmek için hem WS-MetadataExchange hem de HTTP GET kullanmayı dener.
SvcUtil.exe kullanma
Ortak Kullanımlar
Aşağıdaki tabloda, bu araç için yaygın olarak kullanılan bazı seçenekler gösterilmektedir:
Seçenek | Açıklama |
---|---|
/directory:<directory> | Içinde dosya oluşturulacak dizin. Varsayılan: Geçerli dizin. Kısa form: /d |
/help | Araç için komut sözdizimini ve seçenekleri görüntüler. Kısa form: /? |
/noLogo | Telif hakkı ve başlık iletisini gizleme. |
/svcutilConfig:<configFile> | App.config dosyası yerine kullanılacak özel bir yapılandırma dosyası belirtir. Bu, aracın yapılandırma dosyasını değiştirmeden system.serviceModel uzantılarını kaydetmek için kullanılabilir. |
/target:<output type> | Araç tarafından oluşturulacak çıkışı belirtir. Geçerli değerler kod, meta veriler veya xmlSerializer'dır. Kısa form: /t |
Kod Üretimi
Svcutil.exe meta veri belgelerinden hizmet sözleşmeleri, istemciler ve veri türleri için kod oluşturabilir. Bu meta veri belgeleri dayanıklı bir depolamada olabilir veya çevrimiçi olarak alınabilir. Çevrimiçi alma, WS-Metadata Exchange protokollerini veya DISCO protokollerini izler (ayrıntılar için Meta Verileri İndirme bölümüne bakın).
Önceden tanımlanmış bir WSDL belgesini temel alan hizmet ve veri sözleşmeleri oluşturmak için SvcUtil.exe aracını kullanabilirsiniz. /serviceContract anahtarını kullanın ve WSDL belgesinin indirilebileceği veya bulunabileceği bir URL veya dosya konumu belirtin. Bu, WSDL belgesinde tanımlanan ve daha sonra bir şikayet hizmeti uygulamak için kullanılabilecek hizmet ve veri sözleşmelerini oluşturur. Daha fazla bilgi için bkz . Nasıl yapılır: Meta Verileri Alma ve Uyumlu Hizmet Uygulama.
BasicHttpContextBinding uç noktasına sahip bir hizmet için Svcutil.exe özniteliğinin allowCookies
ayarlandığı true
bir BasicHttpBinding oluşturur. Tanımlama bilgileri sunucudaki bağlam için kullanılır. Hizmet tanımlama bilgileri kullandığında istemcideki bağlamı yönetmek isterseniz, yapılandırmayı bağlam bağlaması kullanacak şekilde el ile değiştirebilirsiniz.
Dikkat
Svcutil.exe istemciyi hizmetten alınan WSDL veya ilke dosyasına göre oluşturur. Kullanıcı asıl adı (UPN), "@" kullanıcı adı ve tam etki alanı adı (FQDN) birleştirilerek oluşturulur. Ancak, Active Directory'ye kaydolan kullanıcılar için bu biçim geçerli değildir ve araç tarafından oluşturulan UPN Kerberos kimlik doğrulamasında "Oturum açma girişimi başarısız oldu" hata iletisiyle bir hataya neden olur. Bu sorunu çözmek için bu araç tarafından oluşturulan istemci dosyasını el ile düzeltmeniz gerekir.
svcutil.exe [/t:code] <metadataDocumentPath>* | <url>* | <epr>
Bağımsız değişken | Açıklama |
---|---|
epr |
WS-Metadata Exchange'i destekleyen bir hizmet uç noktası için WS-Addressing EndpointReference içeren xml dosyasının yolu. Daha fazla bilgi için Meta Veri İndirme bölümüne bakın. |
metadataDocumentPath |
Koda (.wsdl, .xsd, .wspolicy veya .wsmex) içeri aktaracak sözleşmeyi içeren meta veri belgesinin (wsdl veya xsd) yolu. Svcutil, içeri aktarmaları izler ve meta veriler için uzak BIR URL belirttiğinizde içerir. Ancak, meta veri dosyalarını yerel dosya sisteminde işlemek istiyorsanız, bu bağımsız değişkendeki tüm dosyaları belirtmeniz gerekir. Bu şekilde, Svcutil'i ağ bağımlılıklarına sahip olamayacağınız bir derleme ortamında kullanabilirsiniz. Bu bağımsız değişken için joker karakterler (*.xsd, *.wsdl) kullanabilirsiniz. |
url |
Meta veriler sağlayan bir hizmet uç noktasının URL'si veya çevrimiçi barındırılan bir meta veri belgesi. Bu belgelerin nasıl alınıldığı hakkında daha fazla bilgi için Meta Veri İndirme bölümüne bakın. |
Seçenek | Açıklama |
---|---|
/Zaman uyumsuz | Hem zaman uyumlu hem de zaman uyumsuz yöntem imzaları oluşturur. Varsayılan: Yalnızca zaman uyumlu yöntem imzaları oluşturun. Kısa Form: /a |
/collectionType:<type> | WCF istemcisi için liste koleksiyonu türünü belirtir. Varsayılan: koleksiyon türü System.Array'dir. Kısa Form: /ct |
/config:<configFile> | Oluşturulan yapılandırma dosyasının dosya adını belirtir. Varsayılan: output.config |
/dataContractOnly | Yalnızca veri sözleşmesi türleri için kod oluşturur. Hizmet Sözleşmesi türleri oluşturulmaz. Bu seçenek için yalnızca yerel meta veri dosyalarını belirtmeniz gerekir. Kısa Form: /dconly |
/enableDataBinding | Veri bağlamayı INotifyPropertyChanged etkinleştirmek için tüm Veri Sözleşmesi türlerinde arabirimini uygular. Kısa Form: /edb |
/excludeType:<type> | Başvuruda bulunulduğu sözleşme türlerinden dışlanacak tam veya bütünleştirilmiş tür adını belirtir. Bu anahtarı ayrı DLL'lerden birlikte /r kullanırken, XSD sınıfının tam adına başvurulur.Kısa Form: /et |
/importXmlTypes | Veri Sözleşmesi olmayan türleri IXmlSerializable türleri olarak içeri aktarmak için Veri Sözleşmesi seri hale getiricisini yapılandırır. |
/dahili | İç olarak işaretlenmiş sınıflar oluşturur. Varsayılan: yalnızca genel sınıflar oluşturun. Kısa Form: /i |
/language:<language> | Kod oluşturma için kullanılacak programlama dilini belirtir. Machine.config dosyasında kayıtlı bir dil adı veya öğesinden CodeDomProviderdevralan bir sınıfın tam adını sağlamanız gerekir. Değerler: c#, cs, csharp, vb, visualbasic, c++, cpp Varsayılan: csharp Kısa form: /l |
/mergeConfig | Oluşturulan yapılandırmayı varolan dosyanın üzerine yazmak yerine varolan bir dosyayla birleştirir. |
/messageContract | İleti Sözleşmesi türleri oluşturur. Kısa Form: /mc |
/namespace:<string,string> | WSDL veya XML Şeması targetNamespace öğesinden CLR ad alanına eşlemeyi belirtir. targetNamespace için '*' kullanıldığında, bu CLR ad alanına açık bir eşleme olmadan tüm targetNamespace'ler eşler. İleti sözleşmesi adının işlem adıyla harmanlanmadığından emin olmak için, tür başvurularını ile :: nitelemeli veya adların benzersiz olduğundan emin olmalısınız.Varsayılan: Veri Sözleşmeleri için şema belgesinin hedef ad alanından türetilir. Varsayılan ad alanı, oluşturulan diğer tüm türler için kullanılır. Kısa Form: /n Not: XmlSerializer ile kullanılacak türler oluşturulurken yalnızca tek bir ad alanı eşlemesi desteklenir. Oluşturulan tüm türler varsayılan ad alanında veya '*' tarafından belirtilen ad alanında olur. |
/noConfig | Yapılandırma dosyaları oluşturmayın. |
/noStdLib | Standart kitaplıklara başvurmayın. Varsayılan: Mscorlib.dll ve System.servicemodel.dll başvurulur. |
/out:<file> | Oluşturulan kodun dosya adını belirtir. Varsayılan: WSDL tanım adından, WSDL hizmet adından veya şemalardan birinin hedef ad alanından türetilir. Kısa form: /o |
/reference:<file path> | Belirtilen derlemedeki türlere başvurur. İstemcileri oluştururken, içeri aktarılan meta verileri temsil eden türler içerebilecek derlemeleri belirtmek için bu seçeneği kullanın. Bu anahtarı kullanarak ileti sözleşmeleri ve XmlSerializer türleri belirtemezsiniz. Başvurulursa DateTimeOffset , yeni bir tür oluşturmak yerine bu tür kullanılır. Uygulama .NET Framework 3.5 kullanılarak yazılmışsa, SvcUtil.exe otomatik olarak başvurur DateTimeOffset . Kısa Form: /r |
/Serileştirilebilir | Serializable Özniteliği ile işaretlenmiş sınıflar oluşturur. Kısa Form: /s |
/serviceContract | Yalnızca hizmet sözleşmeleri için kod oluşturun. İstemci sınıfı ve yapılandırma oluşturulmayacak Kısa Form: /sc |
/serializer:Auto | Seri hale getiriciyi otomatik olarak seçin. Bu, Veri Sözleşmesi seri hale getiricisini kullanmaya çalışır ve başarısız olursa XmlSerializer'ı kullanır. Kısa Form: /ser |
/serializer:DataContractSerializer | Serileştirme ve seri durumdan çıkarma için Veri Sözleşmesi Seri Hale Getiricisi'ni kullanan veri türleri oluşturur. Kısa Form: /ser:DataContractSerializer |
/serializer:XmlSerializer | Serileştirme ve seri durumdan çıkarma için kullanan XmlSerializer veri türleri oluşturur. Kısa Form: /ser:XmlSerializer |
/targetClientVersion | Uygulamanın hedeflediği .NET Framework sürümünü belirtin. Geçerli değerler: Version30 ve Version35 . Varsayılan değer Version30 değeridir.Kısa Form: /tcv Version30 : WinFX kullanan istemciler için kod oluşturuyorsanız kullanın /tcv:Version30 .Version35 : .NET Framework 3.5 kullanan istemciler için kod oluşturuyorsanız kullanın /tcv:Version35 . anahtarıyla kullanırken /tcv:Version35 /async hem olay tabanlı hem de geri çağırma/temsilci tabanlı zaman uyumsuz yöntemler oluşturulur. Ayrıca LINQ özellikli DataSets desteği de DateTimeOffset etkindir. |
/Sarıl -mış | Sarmalanmış parametrelere sahip belge değişmez stilindeki belgeler için özel büyük/küçük harf kullanılıp kullanılmayacağını denetler. Normal büyük/küçük harf kullanımını belirtmek için Hizmet Modeli Meta Veri Yardımcı Programı Aracı (Svcutil.exe) aracıyla /wrapped anahtarını kullanın. |
Not
Hizmet bağlaması sistem tarafından sağlanan bağlamalardan biri olduğunda (bkz. Sistem Tarafından Sağlanan Bağlamalar) ve ProtectionLevel özelliği veya Sign
olarak ayarlandığındaNone
, Svcutil beklenen sistem tarafından sağlanan öğe yerine customBinding> öğesini kullanarak <bir yapılandırma dosyası oluşturur. Örneğin, hizmet öğesini olarak ayarlanmış olarak kullanıyorsa<wsHttpBinding>
, oluşturulan yapılandırmanın yerine bağlamalar bölümünde <wsHttpBinding>
bulunur<customBinding>
.ProtectionLevel
Sign
Koruma düzeyi hakkında daha fazla bilgi için bkz . Koruma Düzeyini Anlama.
Meta Veri Dışarı Aktarma
Svcutil.exe derlenmiş derlemelerdeki hizmetler, sözleşmeler ve veri türleri için meta verileri dışarı aktarabilir. Bir hizmetin meta verilerini dışarı aktarmak için, dışarı aktarmak istediğiniz hizmeti belirtme seçeneğini kullanmanız /serviceName
gerekir. Bir derlemedeki tüm veri sözleşmesi türlerini dışarı aktarmak için seçeneğini kullanmanız /dataContractOnly
gerekir. Varsayılan olarak, meta veriler giriş derlemelerindeki tüm hizmet sözleşmeleri için dışarı aktarılır.
svcutil.exe [/t:metadata] [/serviceName:<serviceConfigName>] [/dataContractOnly] <assemblyPath>*
Bağımsız değişken | Açıklama |
---|---|
assemblyPath |
Dışarı aktarılacak hizmetleri, sözleşmeleri veya veri sözleşmesi türlerini içeren bir derlemenin yolunu belirtir. Giriş olarak birden çok dosya sağlamak için standart komut satırı joker karakterleri kullanılabilir. |
Seçenek | Açıklama |
---|---|
/serviceName:<serviceConfigName> | Dışarı aktarılacak hizmetin yapılandırma adını belirtir. Bu seçenek kullanılırsa, ilişkili bir yapılandırma dosyasına sahip yürütülebilir derleme giriş olarak geçirilmelidir. Svcutil.exe, hizmet yapılandırması için tüm ilişkili yapılandırma dosyalarını arar. Yapılandırma dosyaları herhangi bir uzantı türü içeriyorsa, bu türleri içeren derlemeler GAC'de olmalıdır veya seçeneği kullanılarak /reference açıkça sağlanmalıdır. |
/reference:<file path> | Belirtilen derlemeyi tür başvurularını çözümlemek için kullanılan derleme kümesine ekler. Yapılandırmada kayıtlı 3. taraf uzantıları (Davranışlar, Bağlamalar ve BindingElements) kullanan bir hizmeti dışarı aktarıyor veya doğruluyorsanız, GAC'de olmayan uzantı derlemelerini bulmak için bu seçeneği kullanın. Kısa Form: /r |
/dataContractOnly | Yalnızca veri sözleşmesi türlerinde çalışır. Hizmet Sözleşmeleri işlenmez. Bu seçenek için yalnızca yerel meta veri dosyalarını belirtmeniz gerekir. Kısa Form: /dconly |
/excludeType:<type> | Dışarı aktarmanın dışında tutulacak türün tam veya derleme nitelikli adını belirtir. Bu seçenek, bir hizmet için meta verileri dışarı aktarırken veya türleri dışarı aktarmanın dışında tutmak için bir dizi hizmet sözleşmesinde kullanılabilir. Bu seçenek seçenekle /dconly birlikte kullanılamaz.Birden çok hizmet içeren tek bir derlemeniz varsa ve her biri aynı XSD adına sahip ayrı sınıflar kullanıyorsa, bu anahtar için XSD sınıf adı yerine hizmet adını belirtmeniz gerekir. XSD veya veri sözleşmesi türleri desteklenmez. Kısa Form: /et |
Hizmet Doğrulama
Doğrulama, hizmeti barındırmadan hizmet uygulamalarındaki hataları algılamak için kullanılabilir. Doğrulamak istediğiniz hizmeti belirtmek için seçeneğini kullanmanız /serviceName
gerekir.
svcutil.exe /validate /serviceName:<serviceConfigName> <assemblyPath>*
Bağımsız değişken | Açıklama |
---|---|
assemblyPath |
Doğrulanacak hizmet türlerini içeren bir derlemenin yolunu belirtir. Hizmet yapılandırmasını sağlamak için derlemenin ilişkili bir yapılandırma dosyası olmalıdır. Birden çok derleme sağlamak için standart komut satırı joker karakterleri kullanılabilir. |
Seçenek | Açıklama |
---|---|
/Doğrulamak | seçeneği tarafından /serviceName belirtilen bir hizmet uygulamasını doğrular. Bu seçenek kullanılırsa, ilişkili bir yapılandırma dosyasına sahip yürütülebilir derleme giriş olarak geçirilmelidir.Kısa Form: /v |
/serviceName:<serviceConfigName> | Doğrulanacak hizmetin yapılandırma adını belirtir. Svcutil.exe, hizmet yapılandırması için tüm giriş derlemelerinin tüm ilişkili yapılandırma dosyalarını arar. Yapılandırma dosyaları herhangi bir uzantı türü içeriyorsa, bu türleri içeren derlemeler GAC'de olmalıdır veya seçeneği kullanılarak /reference açıkça sağlanmalıdır. |
/reference:<file path> | Belirtilen derlemeyi tür başvurularını çözümlemek için kullanılan derleme kümesine ekler. Yapılandırmada kayıtlı 3. taraf uzantıları (Davranışlar, Bağlamalar ve BindingElements) kullanan bir hizmeti dışarı aktarıyor veya doğruluyorsanız, GAC'de olmayan uzantı derlemelerini bulmak için bu seçeneği kullanın. Kısa Form: /r |
/dataContractOnly | Yalnızca veri sözleşmesi türlerinde çalışır. Hizmet Sözleşmeleri işlenmez. Bu seçenek için yalnızca yerel meta veri dosyalarını belirtmeniz gerekir. Kısa Form: /dconly |
/excludeType:<type> | Doğrulamanın dışında tutulacak türün tam veya derleme nitelikli adını belirtir. Kısa Form: /et |
Meta Veri İndirme
Svcutil.exe, çalışan hizmetlerden meta verileri indirmek ve meta verileri yerel dosyalara kaydetmek için kullanılabilir. Meta verileri indirmek için seçeneğini belirtmeniz /t:metadata
gerekir. Aksi takdirde istemci kodu oluşturulur. HTTP ve HTTPS URL düzenleri için Svcutil.exe WS-Metadata Exchange ve DISCO kullanarak meta verileri almaya çalışır. Diğer tüm URL düzenleri için Svcutil.exe yalnızca WS-Metadata Exchange kullanır.
Svcutil, meta verileri almak için aşağıdaki meta veri isteklerini aynı anda oluşturur.
Sağlanan adrese MEX (WS-Transfer) isteği
Sağlanan adrese /mex eklenmiş MEX isteği
SAĞLANAN adrese DISKO isteği (ASMX'ten DiscoveryClientProtocol kullanarak).
Varsayılan olarak, Svcutil.exe MEX istekleri yapmak için sınıfında tanımlanan MetadataExchangeBindings bağlamaları kullanır. WS-Metadata Exchange için kullanılan bağlamayı yapılandırmak için, yapılandırmada IMetadataExchange sözleşmesini kullanan bir istemci uç noktası tanımlamanız gerekir. Bu, Svcutil.exe yapılandırma dosyasında veya seçeneği kullanılarak /svcutilConfig
belirtilen başka bir yapılandırma dosyasında tanımlanabilir.
svcutil.exe /t:metadata <url>* | <epr>
Bağımsız değişken | Açıklama |
---|---|
url |
Meta veriler sağlayan bir hizmet uç noktasının URL'si veya çevrimiçi barındırılan bir meta veri belgesi. |
epr |
WS-Metadata Exchange'i destekleyen bir hizmet uç noktası için WS-Addressing EndpointReference içeren xml dosyasının yolu. |
XmlSerializer Tür Oluşturma
Çalışma zamanında bu veri türleri için seri hale getirme ve derleme kodunu kullanarak XmlSerializer seri hale getirilebilen veri türlerini kullanan hizmetler ve istemci uygulamaları, yavaş başlatma performansına neden olabilir.
Not
Önceden oluşturulmuş serileştirme kodu hizmetlerde değil yalnızca istemci uygulamalarında kullanılabilir.
Svcutil.exe, uygulama için derlenmiş derlemelerden gerekli C# serileştirme kodunu oluşturabilir ve böylece bu uygulamalar için başlatma performansını geliştirebilir. Daha fazla bilgi için bkz . Nasıl yapılır: XmlSerializer kullanarak WCF İstemci Uygulamalarının Başlangıç Süresini Geliştirme.
Not
Svcutil.exe yalnızca giriş derlemelerinde bulunan Hizmet Sözleşmeleri tarafından kullanılan türler için kod oluşturur.
svcutil.exe /t:xmlSerializer <assemblyPath>*
Bağımsız değişken | Açıklama |
---|---|
assemblyPath |
Hizmet sözleşmesi türlerini içeren bir derlemenin yolunu belirtir. Serileştirme türleri, her sözleşmedeki tüm Xml SeriLeştirilebilir türleri için oluşturulur. |
Seçenek | Açıklama |
---|---|
/reference:<file path> | Belirtilen derlemeyi tür başvurularını çözümlemek için kullanılan derleme kümesine ekler. Kısa Form: /r |
/excludeType:<type> | Dışarı aktarma veya doğrulamanın dışında tutulacak bir türün tam veya bütünleştirilmiş adını belirtir. Kısa Form: /et |
/out:<file> | Oluşturulan kodun dosya adını belirtir. Araca giriş olarak birden çok derleme geçirildiğinde bu seçenek yoksayılır. Varsayılan: Derleme adından türetilir. Kısa Form: /o |
/UseSerializerForFaults | XmlSerializer varsayılan yerine DataContractSerializerhata okumak ve yazmak için kullanılması gerektiğini belirtir. |
Örnekler
Aşağıdaki komut, çalışan bir hizmetten veya çevrimiçi meta veri belgelerinden istemci kodu oluşturur.
svcutil http://service/metadataEndpoint
Aşağıdaki komut yerel meta veri belgelerinden istemci kodu oluşturur.
svcutil *.wsdl *.xsd /language:C#
Aşağıdaki komut, yerel şema belgelerinden Visual Basic'te veri sözleşmesi türleri oluşturur.
svcutil /dconly *.xsd /language:VB
Aşağıdaki komut, meta veri belgelerini çalışan hizmetlerden indirir.
svcutil /t:metadata http://service/metadataEndpoint
Aşağıdaki komut, bir derlemede hizmet sözleşmeleri ve ilişkili türler için meta veri belgeleri oluşturur.
svcutil myAssembly.dll
Aşağıdaki komut, bir hizmet için meta veri belgeleri ve bir derlemede ilişkili tüm hizmet sözleşmelerini ve veri türlerini oluşturur.
svcutil myServiceHost.exe /serviceName:myServiceName
Aşağıdaki komut, bir derlemedeki veri türleri için meta veri belgeleri oluşturur.
svcutil myServiceHost.exe /dconly
Aşağıdaki komut hizmet barındırmayı doğrular.
svcutil /validate /serviceName:myServiceName myServiceHost.exe
Aşağıdaki komut, derlemedeki herhangi bir hizmet sözleşmesi tarafından kullanılan türler için XmlSerializer serileştirme türleri oluşturur.
svcutil /t:xmlserializer myContractLibrary.exe
En Fazla Ad Tablo Karakter Sayısı Kotası
Svcutil kullanarak bir hizmet için meta veriler oluştururken aşağıdaki iletiyi alabilirsiniz:
Hata: Xml verileri okunurken en fazla ad tablosu karakter sayısı kotası (16384) aşıldığından Meta Veriler http://localhost:8000/somesservice/mex
alınamıyor. Ad tablosu, XML işleme sırasında karşılaşılan dizeleri depolamak için kullanılan bir veri yapısıdır. Yinelenen öğe adları, öznitelik adları ve öznitelik değerlerine sahip uzun XML belgeleri bu kotayı tetikleyebilir. Bu kota, XML okuyucusu oluşturulurken kullanılan XmlDictionaryReaderQuotas nesnesinde MaxNameTableCharCount özelliği değiştirilerek artırılabilir.
Bu hataya, meta verilerini istediğinizde büyük bir WSDL dosyası döndüren bir hizmet neden olabilir. Sorun, svcutil.exe aracının karakter kotasının aşılmasıdır. Bu değer, hizmet reddi (dos) saldırılarını önlemeye yardımcı olmak için ayarlanır. Svcutil için aşağıdaki yapılandırma dosyasını belirterek bu kotayı artırabilirsiniz.
Aşağıdaki yapılandırma dosyasında svcutil için okuyucu kotalarının nasıl ayarlanacağı gösterilmektedir
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="MyBinding">
<textMessageEncoding>
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</textMessageEncoding>
<httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint binding="customBinding" bindingConfiguration="MyBinding"
contract="IMetadataExchange"
name="http" />
</client>
</system.serviceModel>
</configuration>
svcutil.exe.config adlı yeni bir dosya oluşturun ve XML örnek kodunu bu dosyaya kopyalayın. Ardından dosyayı svcutil.exe ile aynı dizine yerleştirin. bir sonraki svcutil.exe çalıştırıldığında yeni ayarlar açılır.
GüvenlikLe ilgili Endişeler
Svcutil.exe yükleme klasörünü, Svcutil.config dosyasını ve tarafından /svcutilConfig
işaret edilen dosyaları korumak için uygun Erişim Denetim Listesi'ni (ACL) kullanmalısınız. Bu, kötü amaçlı uzantıların kaydedilmesini ve çalıştırılmasını engelleyebilir.
Ayrıca, güvenliğin tehlikeye atılma olasılığını en aza indirmek için sistemin bir parçası olmak için güvenilmeyen uzantılar eklememeli veya Svcutil.exe ile güvenilmeyen kod sağlayıcıları kullanmamalısınız.
Son olarak, geçerli işlemde hizmet reddine neden olabileceğinden, aracı uygulamanızın orta katmanında kullanmamalısınız.