2011-01-07 10 views
7

में नहीं जोड़े गए हैं, मैं VS2010 का उपयोग करके अपने वेब एप्लिकेशन में डब्ल्यूसीएफ सेवा संदर्भ जोड़ने की कोशिश कर रहा हूं। यह ठीक जोड़ने के लिए लगता है, लेकिन web.config अपडेट नहीं किया जाता है, जिसका अर्थ मैं एक क्रम अपवाद:WCF सेवा संदर्भ जोड़ते समय, कॉन्फ़िगरेशन विवरण web.config

डिफ़ॉल्ट endpoint तत्व नहीं मिल सका कि संदर्भ अनुबंध ServiceModel ग्राहक विन्यास में 'CoolService.CoolService' अनुभाग। ऐसा इसलिए हो सकता है क्योंकि कॉन्फ़िगरेशन फ़ाइल आपके एप्लिकेशन के लिए मिली थी, या क्योंकि इस अनुबंध से मेल खाने वाला कोई एंडपॉइंट तत्व क्लाइंट तत्व में पाया जा सकता है।

जाहिर है, क्योंकि सेवा मेरे web.config में परिभाषित नहीं है। पुनरुत्पादन के चरण:

  1. राइट क्लिक समाधान> जोड़ें> नई परियोजना> एएसपी.नेट खाली वेब एप्लिकेशन।
  2. नए वेब ऐप में सेवा संदर्भों पर राइट क्लिक करें> सेवा संदर्भ जोड़ें।
  3. मेरी सेवा का पता दर्ज करें और जाएं पर क्लिक करें। मेरी सेवा बाएं हाथ सेवा अनुभाग में दिखाई दे रही है, और मैं इसके सभी परिचालन देख सकता हूं।
  4. मेरी सेवा के लिए नामस्थान टाइप करें।
  5. ठीक क्लिक करें। सेवा संदर्भ सही ढंग से जेनरेट किया गया है, और मैं context.cs फ़ाइल खोल सकता हूं, और यह सब ठीक दिखता है।
  6. web.config फ़ाइल खोलें। यह अभी भी खाली है!

    <system.web> 
        <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    
    
    <system.serviceModel> 
        <bindings /> 
        <client /> 
    </system.serviceModel> 
    

हो रहा क्यों है? यह कंसोल एप्लिकेशन, या किसी अन्य प्रोजेक्ट प्रकार के साथ भी होता है जो मैं कोशिश करता हूं। कोई मदद?

<?xml version="1.0"?> 

<configuration> 

    <system.web> 
    <compilation debug="true" /> 
    </system.web> 
    <!-- When deploying the service library project, the content of the config file must be added to the host's 
    app.config file. System.Configuration does not support config files for libraries. --> 
    <system.serviceModel> 

    <services> 

     <service name="CoolSQL.Server.WCF.CoolService"> 

     <endpoint address="" 
      binding="webHttpBinding" 
      contract="CoolSQL.Server.WCF.CoolService" 
      behaviorConfiguration="SilverlightFaultBehavior"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 

     <endpoint address="mex" 
      binding="mexHttpBinding" 
      contract="IMetadataExchange" /> 

     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8732/Design_Time_Addresses/CoolSQL.Server.WCF/CoolService/" /> 
      </baseAddresses> 
     </host> 

     </service> 

    </services> 

    <behaviors> 
     <endpointBehaviors> 
     <behavior name="webBehavior"> 
      <webHttp /> 
     </behavior> 
     <behavior name="SilverlightFaultBehavior"> 
      <silverlightFaults /> 
     </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

    <bindings> 

     <webHttpBinding> 
     <binding name="DefaultBinding" 
      bypassProxyOnLocal="true" 
      useDefaultWebProxy="false" 
      hostNameComparisonMode="WeakWildcard" 
      sendTimeout="00:05:00" 
      openTimeout="00:05:00" 
      receiveTimeout="00:00:10" 
      maxReceivedMessageSize="2147483647" 
      transferMode="Streamed"> 
      <readerQuotas maxArrayLength="2147483647" 
      maxStringContentLength="2147483647" /> 
     </binding> 
     </webHttpBinding> 

    </bindings> 

    <extensions> 
     <behaviorExtensions> 
     <add name="silverlightFaults" 
      type="CoolSQL.Server.WCF.SilverlightFaultBehavior, CoolSQL.Server.WCF" /> 
     </behaviorExtensions> 
    </extensions> 

    <diagnostics> 
     <messageLogging logEntireMessage="true" 
     logMalformedMessages="false" 
     logMessagesAtServiceLevel="true" 
     logMessagesAtTransportLevel="false" 
     maxMessagesToLog="3000" 
     maxSizeOfMessageToLog="2000" /> 
    </diagnostics> 

    </system.serviceModel> 

    <startup> 
    <supportedRuntime version="v4.0" 
     sku=".NETFramework,Version=v4.0" /> 
    </startup> 

    <system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel.MessageLogging" 
     switchValue="Information, ActivityTracing"> 
     <listeners> 
      <add name="messages" 
      type="System.Diagnostics.XmlWriterTraceListener" 
      initializeData="c:\messages.e2e" /> 
     </listeners> 
     </source> 
    </sources> 
    </system.diagnostics> 

</configuration> 

उत्तर

3

मैं कैसे इस को हल करने के लिए की खोज की:

यहाँ मेरी WCF सेवा से app.config है। मेरी डब्ल्यूसीएफ सेवा को अपने स्वयं के प्रोजेक्ट में कार्यान्वित किया गया था, और उसी समाधान में एक अलग कंसोल एप्लिकेशन द्वारा होस्ट किया गया था। अगर मैं डब्ल्यूसीएफ सेवा को समाधान की स्टार्टअप प्रोजेक्ट के रूप में चलाता हूं (उदाहरण के लिए वीएस को मेरे लिए होस्ट करें) तो संदर्भ जोड़ना ठीक काम करता है और क्लाइंट web.config में सही लाइनें जोड़ दी जाती हैं। लेकिन अगर मैं अपने कंसोल एप्लिकेशन के भीतर से सेवा होस्ट करता हूं, जबकि मैं अभी भी संदर्भ जोड़ सकता हूं, तो क्लाइंट का web.config संशोधित नहीं होता है। इसलिए, वर्कअराउंड पहले वीएस को सेवा होस्ट करने देना है, फिर संदर्भ जोड़ें, फिर कंसोल एप्लिकेशन में होस्ट (उसी पते और पोर्ट पर) होस्ट करने के लिए सेवा बदलें।

यह आश्चर्यजनक व्यवहार है, और अगर कोई इस पर कोई प्रकाश डाल सकता है तो मैं उत्सुक हूं?

+0

क्या आपके सर्वर-साइड कॉन्फ़िगरेशन कंसोल ऐप * और * डब्ल्यूसीएफ सेवा प्रोजेक्ट में है? –

+0

नहीं, बस डब्ल्यूसीएफ सेवा परियोजना में। –

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