Ssl Wcf Problemi
-
ssl üzerinden wcf web servisi yayınlamamız gerekiyor. nitekim yayınladıkta. yalnız anlam veremediğim şöyle bir sorun çıktı:
http://www.upmatik.com/m/2014/09/17/UntitledlNnIg.png
yayınladığımız adres out-network. içeriğe girdiğimiz de ise bizim network adresi çıkıyor. yayınlanan adres ile web servisin adresi birbirini eşitlemiyor.
bunun için yapılması gereken bi ayar vb.. var mıdır? bilgisi ya da fikri olan var mı?
-
çok ilginç.
Request.ServerVariables["SERVER_NAME"];
bu ne döndürüyor?
biraz saçma olacak ama serveri restart edip ilk requesti dışarıdan almayı denesene belki cacheliyordur
-
normal aspx serverı görüyor şeyh. wcf e dışarıdan erişemediğimiz için ne döndürdüğünü bilmiyorum. restart ettik işe yaramadı.
ssl sertifikasının başına "*" konulduğunda host name verebiliyoruz. şuanda extra bi path kullandığımız için onu da tam halledemedik. birazdan subdomain e taşınacak ve trusted olmayan bi sertifikayla tekrar denicez.
Aşağıda ki link burada dursun. Herkese lazım olabilir.
http://blog.goodcoresoft.com/host-name-ssl-bindings-iis7/ -
web.config paylaşabilir misin?
-
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<connectionStrings>
<add name="RcVerimConnectionString" connectionString="******" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
</assemblies>
</compilation>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="WebServisBehavior">
<serviceMetadata httpsGetEnabled="true" httpsGetUrl="" httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="cagriBinding" maxReceivedMessageSize="2000000" maxBufferSize="2000000">
<readerQuotas maxArrayLength="2000000" maxStringContentLength="2000000"/>
<security mode="Transport">
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="WebServisBehavior" name="WebServis">
<endpoint address="" binding="basicHttpBinding" contract="IWebServis" bindingConfiguration="cagriBinding">
</endpoint>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
</configuration> -
hocam doğru anlamışsam bu problem değil :) bugün şirkette biz de sabahtan beri wcf ile uğraştık ama bizim problem baya bir uğraştırıcıydı hem de 3 tane ve çözdük zor da olsa.. ios ile bağlanma sıkıntısı yaşıyorduk çok zorladı bizi.. neyse
şimdi senin dediğin şey bizde de var, yani wcf servisi çalıştırdığımda aldığım link ile servisten gelen link farklı oluyor. çünkü servisin config ine bakarsan oradaki endpointlerde görebilirsin. (server in) sanırım senin paylaştığın client in config dosyası..
şuan şirkette değilim, olsaydm gösterirdim sana ne demek istediğimi.. yani görülen adres farklı, wcf in adresi farklı.
-
unbalanced bunu yazdı
hocam doğru anlamışsam bu problem değil :) bugün şirkette biz de sabahtan beri wcf ile uğraştık ama bizim problem baya bir uğraştırıcıydı hem de 3 tane ve çözdük zor da olsa.. ios ile bağlanma sıkıntısı yaşıyorduk çok zorladı bizi.. neyse
şimdi senin dediğin şey bizde de var, yani wcf servisi çalıştırdığımda aldığım link ile servisten gelen link farklı oluyor. çünkü servisin config ine bakarsan oradaki endpointlerde görebilirsin. (server in) sanırım senin paylaştığın client in config dosyası..
şuan şirkette değilim, olsaydm gösterirdim sana ne demek istediğimi.. yani görülen adres farklı, wcf in adresi farklı.
hocam ben henüz client'e geçemedim :) benim paylaştığım web.config dosyası. bu şekilde client'den servisi referans verdiğimde servisten gelen adresi çekiyor. iss'de host name bilgisi ne varsa, o yazılıyor oraya.
siz nasıl çözdünüz bu durumu?
-
hocam dediğim gibi bu sorun değil yani yayınlanan adres ile servisin adresi farklı .. bak şimdi
<endpoint address="http://srv-apps10:3334/DMSvr/Svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDMSvc" contract="ServiceReference2.IDMSvc" name="BasicHttpBinding_IDMSvc" /> <endpoint address="http://srv-apps10:3334/DMSvr/Obj" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDMObj" contract="ServiceReference2.IDMObj" name="BasicHttpBinding_IDMObj" /> <endpoint address="http://srv-apps10:3334/Connect/DMService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDMService" contract="ServiceReference1.IDMService" name="BasicHttpBinding_IDMService" />bu mesela localde gösteriyor, ama halbu ki dışardan erişiyorum. onun adresi daha farklı.. ama bağlandığı adres bu endpoint.
evdeyim şuan, sana tüm konfigürasyon dosyalarını göstermek isterdim belki daha iyi açıklayabilirim diye.
unbalanced tarafından 18/Eyl/14 10:10 tarihinde düzenlenmiştir -
eyw hocam hepinize teşekkürler. şuan çalışıyor. bizim rus sistemciye test dedik diye serverı dışarıya yönlendirmemiş. o yüzden internal adresi görüyormuşuz. (en azından açıkladığı bu.)
Konuya destek olmak amaçlı çalışan web.config dosyamı ekliyorum.
<system.serviceModel>
<protocolMapping>
<addscheme="https" binding="basicHttpBinding" />
</protocolMapping>
<bindings>
<basicHttpBinding>
<bindingname="benimBinding" maxReceivedMessageSize="2000000">
<readerQuotasmaxArrayLength="2000000" maxStringContentLength="2000000"/>
<securitymode="Transport">
<transportclientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behaviorname="WebServisBehavior">
<serviceMetadatahttpsGetEnabled="true" httpGetEnabled="true" />
<serviceSecurityAuditauditLogLocation="Application" serviceAuthorizationAuditLevel="Failure" messageAuthenticationAuditLevel="Failure" suppressAuditFailure="false" />
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<addscheme="http" port="80" />
<addscheme="https" port="443" />
</defaultPorts>
</useRequestHeadersForMetadataAddress>
<serviceDebugincludeExceptionDetailInFaults="true"/>
<dataContractSerializermaxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<servicebehaviorConfiguration="WebServisBehavior" name="WebServis">
<endpointaddress="" binding="basicHttpBinding" contract="IWebServis" bindingConfiguration="benimBinding">
</endpoint>
<endpointaddress="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
