2011-12-30 19 views
10

ben ile bitirmek bir Servis Başvurusu güncelleme olduğunda:Güncelleme Servisi Referansı, Yapılandırma için Soap12 eklenmesinde ısrar ediyor.

o sözleşme için birden fazla uç nokta yapılandırma bulunamadığı için yüklenemedi sözleşme 'MyService.MainServiceSoap' için bir bitiş noktası yapılandırma bölümü. Lütfen tercih edilen son nokta yapılandırma bölümünü isme göre belirtin.

benim web.config böyle biter:

bitiş noktaları:

<endpoint address="http://localhost/main/MainService.asmx" 
    binding="basicHttpBinding" bindingConfiguration="MainServiceSoap" 
    contract="MyService.MainServiceSoap" name="MainServiceSoap" /> 
    <endpoint address="http://localhost/main/MainService.asmx" 
    binding="customBinding" bindingConfiguration="MainServiceSoap12" 
    contract="MyService.MainServiceSoap" name="MainServiceSoap12" /> 

bağlamaları:

<basicHttpBinding> 
    <binding name="MainServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00" 
     receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" 
     bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
     maxBufferSize="655360" maxBufferPoolSize="5242880" maxReceivedMessageSize="655360" 
     messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
     useDefaultWebProxy="true"> 
     <readerQuotas maxDepth="32" maxStringContentLength="81920" maxArrayLength="163840" 
     maxBytesPerRead="40960" maxNameTableCharCount="163840" /> 
     <security mode="None"> 
     <transport clientCredentialType="None" proxyCredentialType="None" 
      realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
    <customBinding> 
    <binding name="MainServiceSoap12"> 
     <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" 
     messageVersion="Soap12" writeEncoding="utf-8"> 
     <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
      maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     </textMessageEncoding> 
     <httpTransport manualAddressing="false" maxBufferPoolSize="524288" 
     maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous" 
     bypassProxyOnLocal="false" decompressionEnabled="true" hostNameComparisonMode="StrongWildcard" 
     keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous" 
     realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" 
     useDefaultWebProxy="true" /> 
    </binding> 
    </customBinding> 

el customBinding ve Soap12 uç noktasını silmek ve her şey gayet iyi çalışıyor. Ancak servisi tekrar güncellerseniz (Update Service Reference'ı sağ tıklattığınızda), eklenen özel ciltleme tekrar eklenir ve hataya neden olur ve yapılandırma dosyasından el ile kaldırılması gerekir.

Birisi bunu nasıl düzelteceğini biliyor mu? Özel bir soap12 bağlama istemiyorum/ihtiyacım yok. Sadece benim vekil sınıfını yeniden svcutil.exe elle diyoruz

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <globalization culture="es-PY" uiCulture="es-PY"/> 
    <customErrors mode="Off"/> 
    <webServices> 
<!-- Tried adding and/or removing protocols and conformanceWarnings --> 
     <protocols> 
     <add name="HttpGet"/> 
     <add name="HttpPost"/> 
     </protocols> 
<!-- --> 
     <conformanceWarnings> 
     <remove name="BasicProfile1_1"/> 
     </conformanceWarnings> 
    </webServices> 
    <compilation debug="true" targetFramework="4.0"/> 
    </system.web> 
    <system.serviceModel> 
    <standardEndpoints> 
     <webHttpEndpoint> 
     <standardEndpoint name="standard" maxReceivedMessageSize="6553600" maxBufferSize="6553600" transferMode="Streamed" helpEnabled="true" automaticFormatSelectionEnabled="true"> 
      <readerQuotas maxStringContentLength="65536000" maxArrayLength="163840" /> 
     </standardEndpoint> 
     </webHttpEndpoint> 
    </standardEndpoints> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 

      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
      <!--<serviceMetadata httpGetEnabled="true"/>--> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 

     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
<!-- Tried setting multipleSiteBindingEnalbed true and false --> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/> 
<!-- --> 

    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
    <connectionStrings> 
    <clear/> 
    <add name="GamblingEntities" connectionString="..." providerName="System.Data.EntityClient" /> 
    <add name="GamblingSiteEntities" connectionString="..." providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
    <system.data> 
    <DbProviderFactories> 
     <clear/> 
     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, &#xA;Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/> 
    </DbProviderFactories> 
    </system.data> 
</configuration> 
+0

Hizmet referansı olarak eklenen erişim hizmetiniz var mı? –

+0

evet, her iki noktanın geliştiricisiyim. –

+0

IIS'de barındırma hizmeti veriyor musunuz ve eğer öyleyse, sitenizdeki bağlamaları ve uygulamada izin verilen iletişim kurallarına ne ayarladınız? –

cevap

2

.NET 2.0'daki yeni ASMX yürütme zamanı SOAP 1.2'yi destekler. Şu anda SOAP 1.1 en çok endüstride kullanılmaktadır. .NET Framework'te hem SOAP 1.1 hem de SOAP 1.2 desteklenir. Bu, .NET Framework 2.0'da oluşturulan Web Hizmetlerinin, SOAP 1.1 ve SOAP 1.2 iletilerini destekleyecek şekilde yapılandırılacağı anlamına gelir. Bu dolaylı olarak, Web Hizmeti için oluşturulan WSDL'lerin iki tip bağlama, yani SOAP 1.1 ve SOAP 1.2'ye sahip olacağı anlamına gelir. İki bağlamaları oluşturuluyor neden

Taken from here

budur.

<remove name="HttpSoap12"/> 

Bunu nasıl devre dışı bıraktığınızı tahmin ediyorum sanırım bunu neden bir çözüm olarak görüyorsunuz. Web hizmetinizi yeni çerçeveye taşıdığınızda bir şey buna neden olmuş olabilir ve bu nedenle eski web hizmetlerinizin 1.1'deki bazılarının aynı şekilde yanıt vermemesinin nedeni budur. Ne olacağını görmek için 2.0 framework'ü hedeflemeyi deneyin.

+0

Hizmetin yaratıcısı im! –

+0

Evet, sorunun giderilmesini kaldırmayı biliyorum, ancak hizmeti güncellediğimde bu tekrar ekleniyor ve web.config dosyasına eklenmesinin nasıl önleneceği asıl soru. –

+0

İstemciden değil, özgün hizmetten kaldırın. İstemciye bir referans eklediğinizde artık orada olmayacaktır. –

-3

:

Bu hizmet yapılandırma dosyasıdır. Çok daha basit.

3

Katı bir çözüm yoktur. Sorunu ben seçtim. Ben aynı problemin kurbanıyım, şimdi svcutil kullanarak dll oluşturmak için geçiş yaptım ama bu sorun burada Microsoft'a bildirildi update-or-configure-an-existing-service-reference-in-sl-application-you-get-duplicate-binding-and-endpoint-information

Onlar VS2010'da düzeltildiğini söylediler ama bunun doğru olmadığını, bende VS2010 SP1'in kurulu olduğunu söylediler ancak bu SP1'de de sabit değildir. Yani burada verilen hiçbir düzeltme yok ve hata 'Harici' olarak kapatıldı. garip.

Hata raporu sayfasında, ayrıca bir geçici çözüm bulabilirsiniz, ancak bu karışık buluyorum.

başka çözüm çift uç nokta

MyService.MainServiceSoap mainServiceSoap = yeni MyService önlemek için kodlanmış adı bağlayıcı hizmeti istemci nesnesi yaratıyor.MainServiceSoap ("MainServiceSoap");

veya bir başka hata raporunu Microsoft'ta açabilir ve düzeltmek için oy verebiliriz.

+0

Gerçekten de öyle görünüyor. Ayrıca bulgularınızı VS2010SP1 – Plippie

+0

ile de kontrol ettim Visual Studio 2012 ile aynı –

İlgili konular