wsdl

2009-09-08 16 views
36

क्लाइंट से वेब सेवा उत्पन्न करने के लिए कैसे वेब सेवा उत्पन्न करने के लिए मुझे wsdl प्रदान किया गया। लेकिन जब मैंने wsdl.exe आदेश का उपयोग किया तो यह .cs क्लास को उत्पन्न करता था। मैंने अपनी वेब सेवा में उस वर्ग का उपभोग किया और जब मैंने क्लाइंट को wsdl प्रदान किया, तो यह उनकी स्कीमा से मेल नहीं खाता। असल में मैं चाहता हूं कि .asmx को wsdl से स्वचालित रूप से जेनरेट किया जाए ताकि मैं वेब विधि भर सकूं। ताकि यह वास्तव में उनकी स्कीमा से मेल खाए। उम्मीद है कि यह समझ में आता है।wsdl

+0

मैंने वास्तव में wsdl.exe/server या/serverinterface भी कोशिश की है जो अभी भी .cs वर्ग उत्पन्न कर रहा है। – alice7

उत्तर

4

wsdl /server या wsdl /serverinterface स्विच का उपयोग करने के बारे में कैसे? जहां तक ​​मैं wsdl.exe कमांड लाइन गुणों को समझता हूं, वही है जो आप खोज रहे हैं।

- ADVANCED - 

/सर्वर

दूसरी ओर: तुम क्यों अप्रचलित प्रौद्योगिकी समाधान बनाने के लिए करना चाहते हैं? डब्ल्यूसीएफ सेवा के रूप में इस वेब सेवा को क्यों न बनाएं। यह करने के लिए वर्तमान और अधिक आधुनिक, अधिक लचीला तरीका है!

मार्क


अद्यतन:

[WebService(Namespace="http://.......")] 
public abstract partial class OneCrmServiceType : System.Web.Services.WebService 
{ 
    /// <remarks/> 
    [WebMethod] 
    public abstract void OrderCreated(......); 
} 

यह मूलतः लगभग ठीक उसी कोड है:

जब मैं एक WSDL फ़ाइल पर wsdl /server उपयोग करते हैं, मैं इस फ़ाइल बनाई मिलता है जो तब उत्पन्न होता है जब आप अपने समाधान में एएसएमएक्स फ़ाइल जोड़ते हैं (फ़ाइल के पीछे कोड में - "yourservice.asmx.cs")। मुझे नहीं लगता कि आप एक डब्लूएसडीएल फ़ाइल से एएसएमएक्स फ़ाइल बनाने के करीब आ सकते हैं।

आप कभी भी "yourservice.asmx" मैन्युअल रूप से जोड़ सकते हैं - यह वास्तव में बहुत शामिल नहीं है:

<%@ WebService Language="C#" CodeBehind="YourService.asmx.cs" 
     Class="YourServiceNamespace.YourServiceClass" %> 
+1

ऐसा नहीं है कि वास्तव में मैं देख रहा हूं। यह प्रॉक्सी क्लास उत्पन्न करेगा जो मैं नहीं चाहता। मैं स्वचालित रूप से abc.asmx उत्पन्न करना चाहता हूं। और मैंने डब्ल्यूसीएफ के लिए सोचा लेकिन वेब सेवा बनाकर सरल हो गया। – alice7

3

आप गारंटी नहीं दे सकते कि स्वचालित रूप से बना डबल्यूएसडीएल डबल्यूएसडीएल जहां से आप सेवा बनाने की भरपाई कर देंगे इंटरफेस।

अपने परिदृश्य में, आपको अपनी वेबसाइट पर कहीं भी WSDL फ़ाइल रखना चाहिए, और उपभोक्ता उस यूआरएल का उपयोग करते हैं। आपको web.config में Documentation प्रोटोकॉल को अक्षम करना चाहिए ताकि "? Wsdl" WSDL वापस नहीं लौटाए। <protocols> Element देखें।

इस विषय को एक विरासत प्रौद्योगिकी के लिए विशिष्ट है:

इसके अलावा, उस लेख के पहले पैराग्राफ पर ध्यान दें। एक्सएमएल वेब सेवाएं और एक्सएमएल वेब सेवा क्लाइंट अब Windows Communication Foundation (WCF) का उपयोग करके बनाया जाना चाहिए।

60

दुर्भाग्यवश, जो आप खोज रहे हैं उसके लिए जादू बुलेट समाधान नहीं है। यहाँ आप क्या कर सकते हैं: अपनी पसंद के भाषा के लिए

wsdl.exe yourFile.wsdl /l:CS /serverInterface
उपयोग वीबी या सीएस:

  • दृश्य स्टूडियो कमांड प्रॉम्प्ट विंडो में इस आदेश का उपयोग कर एक अंतरफलक वर्ग पैदा करते हैं।यह एक नया .cs या .vb फ़ाइल बनाएगा।

  • एक नया .NET वेब सेवा प्रोजेक्ट बनाएं। अपनी परियोजना में मौजूदा फ़ाइल आयात करें - फ़ाइल जो ऊपर दिए गए चरण में बनाई गई थी।

  • कोड-व्यू में आपका .asmx.cs फ़ाइल में, इस तरह के रूप में अपने वर्ग को संशोधित:

 

public class MyWebService : System.Web.Services.WebService, IMyWsdlInterface 
{  
    [WebMethod] 
    public string GetSomeString() 
    { 
     //you'll have to write your own business logic 
     return "Hello SOAP World"; 
    } 
} 
+2

इसके अलावा आप एक निश्चित स्थान पर जेनरेट कोड डालने के लिए "पथ \ to \ folder" डाल सकते हैं। – b729sefc

+0

धन्यवाद, बड़ी मदद –

1

आप WSCF का उपयोग कर WS प्रॉक्सी वर्गों उत्पन्न कर सकते हैं (वेब ​​सेवा अनुबंध पहले) thinktecture.com से उपकरण। तो अनिवार्य रूप से, आप wsdl से webservices बना सकते हैं। एएसएमएक्स बनाना, शायद नहीं, लेकिन यह इतना आसान नहीं है? यह टूल शानदार रूप से VS2005-8 (2010/WCF के लिए नया संस्करण WSCF-blue कहा जाता है) में एकीकृत करता है। मैंने इसे लोड किया है और हमेशा यह वास्तव में अच्छा पाया है।

+0

मैं इसे भी ध्यान में रख रहा था, हालांकि मुझे अपने साथ बहुत भाग्य नहीं था (विशेष रूप से डब्लूएससीएफ ब्लू)। शायद मैंने शुरुआती संस्करण या कुछ इस्तेमाल किया था। –

1

उत्तर देने में बहुत देर हो सकती है। लेकिन जरूरतमंदों को उपयोगी हो सकता है: एसवीसी को डबल्यूएसडीएल कन्वर्ट करने के लिए कैसे:

  1. मान लिया जाये कि आप स्थान पर .wsdl फ़ाइल कर रहे हैं: आगे पहुंच में आसानी के लिए "ई \"।
  2. प्रत्येक .wsdl फ़ाइल के लिए कमांड तैयार करें: E: \ YourServiceFileName.wsdl
  3. अनुमतियां: मान लें कि आपके पास अनुमतियां करने के लिए व्यवस्थापकीय अधिकार हैं। ओपन डायरेक्टरी: सी: \ प्रोग्राम फाइल्स (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 12.0 \ वीसी \ बिन
  4. amd64 => सुरक्षा => संपादित करें => उपयोगकर्ता जोड़ें => हर कोई या वर्तमान उपयोगकर्ता => सभी अनुमतियों को अनुमति दें => ठीक।
  5. टेक्स्ट एडिटर में प्रत्येक फ़ाइल के लिए कमांड तैयार करें: wsdl.exe E: \ YourServiceFileName.wsdl/l: CS/server।
  6. अब दृश्य स्टूडियो कमांड प्रॉम्प्ट खोलें: सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 12.0 \ कॉमन 7 \ टूल्स \ शॉर्टकट्स \ वीएस2013 x64 मूल उपकरण कमांड प्रॉम्प्ट।
  7. उपरोक्त आदेश निष्पादित करें।
  8. निर्देशिका पर जाएं: सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 12.0 \ वीसी \ bin \ amd64, जहां संबंधित सीएस फ़ाइल उत्पन्न की जानी चाहिए।

    9. उचित स्थान पर बनाया गया सीएस फ़ाइल बनाया गया।

+0

बनाम सेमीडी विंडो से यह सबसे आसान और सीधा दृष्टिकोण है। –

संबंधित मुद्दे