aracılığıyla uç noktalar arasında nasıl paylaşabilirim Hizmet arayüzümü, ilgili işlevsellikler kümelerine bölen bir Hizmet Sözleşmeleri kümesine sahibim. Şu anda tek bir hizmet sınıfı kullanarak tüm sözleşmeleri uyguluyorum (bunları daha sonra bölmek isteyebilirim ancak şimdilik tek hizmet sınıfı yeterlidir).WCF IIS hizmeti tek bir hizmet tarafından uygulanan birden çok Hizmet Sözleşmesini barındırır - uri'yi
Bitiş noktalarını bir yapılandırma dosyası kullanarak (kodun aksine) yapılandırmaya çalışıyorum. Sorun iki uç noktanın (her bir hizmet sözleşmesi için bir tane) aynı uri'yi dinlemeye çalıştığı için bir ServiceActivationException
aldım. Özel ayrıntılar, bu sonuca ulaşmak için, iki uç noktanın bağlayıcı nesneyi paylaşması gerektiğini söyler, bu mantıklıdır, ancak bunu yapılandırma yoluyla nasıl yapılacağını anlayamıyorum (IIS üzerinden barındıracağım gibi bu kodu kullanarak denemedim ama Kodda yapılandırmak için basit bir egzersiz olduğunu hayal edebiliyorum).
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="CDC.WebPortal.MidTier.MidTierAccessService"
behaviorConfiguration="MidTierServiceBehaviour" >
<endpoint address=""
binding="webHttpBinding"
bindingConfiguration="RestBindingConfiguration"
contract="****************************.IProductService" />
<endpoint address=""
binding="webHttpBinding"
bindingConfiguration="RestBindingConfiguration"
contract="****************************.ICategoryService" />
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="RestBindingConfiguration"
maxReceivedMessageSize="104857600">
<readerQuotas maxStringContentLength="104857600"/>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="MidTierServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
: Aşağıdaki
Şu anda (bu hala güvenlik kaygıları vb Bu ayarların bazılarını maruz bırakabilir bu konuda halen endişeli değilim bu yüzden dev edilir) kullanıyorum yapılandırma olduğunu Yani benim sorum şu iki bitiş noktası arasındaki bu bağı nasıl paylaşırım?
this SO question Yorumlar bunu yapamayabilir, ancak doğru olduğuna inanmıyorum. eğer yardımcı olur tamam olmalıdır yapıyorum this MS publication göre
GÜNCELLEME 1 ...
Update2 İşte svc dosya içeriği:
<%@ ServiceHost Language="VB" Debug="true"
Service="*********************.MidTierAccessService"
Factory="Microsoft.ServiceModel.Web.WebServiceHost2Factory" %>
GÜNCELLEME 3 İşte istisna ayrıntısı:
ce zaten URI '********************' dinlemek için ilişkilendirilmiştir. iki bitiş noktasının aynı ListenUri'yi paylaşmak istemeleri durumunda, aynı bağlama nesne örneğini de paylaşmaları gerekir. İki çakışan uç nokta, ya bir yapılandırma dosyasında AddServiceEndpoint() çağrılarında veya AddServiceEndpoint() ve yapılandırmasının bir bileşimi olarak belirtildi. Ben "Belirli bir .svc hizmet için birden fazla son nokta açığa zaman göreceli adresleri kullanmak gerekecektir" belirterek, daha önce this cevapsız
GÜNCELLEME 4 Ok. Bunun nedeni, hizmetin temel adresini belirleyen IIS sanal dizini ile ilgili bir şeydir, herkes bunu biraz daha ayrıntılı olarak açıklayabilir, yani IIS'nin her sözleşme için neden göreli adresleme yapması gerektiğini açıklayabilir.
+1 'doğrulanabilir büyücü' için – dan
@dan: lol: D Teşekkürler. – jrista