Usiłuję utworzyć usługę WCF za pomocą basicHttpBinding do użycia przez https. Oto mój web.config:
<!-- language: xml -->
<service behaviorConfiguration="MyServices.PingResultServiceBehavior"
name="MyServices.PingResultService">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="defaultBasicHttpBinding"
contract="MyServices.IPingResultService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
...
<bindings>
<basicHttpBinding>
<binding name="defaultBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
...
<behaviors>
<serviceBehaviors>
<behavior name="MyServices.UpdateServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Łączę się za pomocą WCFStorm, który jest w stanie poprawnie pobrać wszystkie metadane, ale kiedy wywołam rzeczywistą metodę, otrzymuję:
Podany schemat URI „https” jest nieprawidłowy; oczekiwany „http”. Nazwa parametru: via
Odpowiedzi:
Spróbuj dodać poświadczenia wiadomości do pliku app.config, np .:
źródło
Dodając to jako odpowiedź, tylko dlatego, że nie możesz zrobić zbyt wiele wymyślnego formatowania w komentarzach.
Miałem ten sam problem, z tym wyjątkiem, że tworzyłem i wiązałem mojego klienta usług internetowych całkowicie kodem.
Powodem jest to, że DLL był ładowany do systemu, co zabraniało używania plików konfiguracyjnych.
Oto kod, który musiał zostać zaktualizowany, aby komunikować się przez SSL ...
źródło
Zmień z
do
w pliku web.config. Ta zmiana pozwoli Ci używać https zamiast http
źródło
Czy używasz tego na Cassini (vs serwer dev) lub w IIS z zainstalowanym certyfikatem? W przeszłości miałem problemy z podłączeniem bezpiecznych punktów końcowych na serwerze deweloperskim.
Oto konfiguracja wiązania, która działała dla mnie w przeszłości. Zamiast
basicHttpBinding
tego używawsHttpBinding
. Nie wiem, czy to dla ciebie problem.i punkt końcowy
Upewnij się również, że zmieniłeś konfigurację klienta, aby włączyć zabezpieczenia transportu.
źródło
Miałem ten sam wyjątek w
custom binding
scenariuszu. Każdy, kto stosuje to podejście, może to również sprawdzić.W rzeczywistości dodawałem odwołanie do usługi z
local WSDL
pliku. Został dodany pomyślnie i wymagane plik niestandardowy został dodany do pliku konfiguracyjnego. Jednak faktyczną usługą była https; nie http. Zmieniłem więc element httpTransport ashttpsTransport
. To rozwiązało problemBibliografia
źródło
Miałem DOKŁADNIE ten sam problem co OP. Moja konfiguracja i sytuacja były identyczne. W końcu zawęziłem to do problemu w WCFStorm po utworzeniu odwołania do usługi w projekcie testowym w Visual Studio i potwierdzeniu, że usługa działa. W Storm musisz kliknąć opcję ustawień „Konfiguracja” (NIE „Konfiguracja klienta”). Po kliknięciu na to kliknij kartę „Bezpieczeństwo” w wyskakującym oknie dialogowym. Upewnij się, że „Typ uwierzytelnienia” jest ustawiony na „Brak” (ustawienie domyślne to „Uwierzytelnianie systemu Windows”). Presto, to działa! Zawsze testuję swoje metody w WCFStorm, gdy je buduję, ale nigdy nie próbowałem używać go do łączenia się z tą, która została już skonfigurowana na SSL. Mam nadzieję, że to komuś pomoże!
źródło
Natknąłem się na ten sam problem, oto jak moje rozwiązanie okazało się na końcu:
Zasadniczo zamieniłem każde wystąpienie HTTP na Https. Możesz spróbować dodać oba z nich, jeśli wolisz.
źródło
Jeśli zrobisz to programowo, a nie w pliku web.config:
źródło
Warto pamiętać, że pliki konfiguracyjne można podzielić na pliki pomocnicze, aby ułatwić zmiany konfiguracji na różnych serwerach (dev / demo / produkcja itp.), Bez konieczności ponownej kompilacji kodu / aplikacji itp. Na przykład używamy ich, aby umożliwić inżynierom na miejscu wprowadzaj zmiany punktu końcowego bez faktycznego dotykania „prawdziwych” plików.
Pierwszym krokiem jest przeniesienie sekcji powiązań poza WPF App.Config do osobnego pliku.
Sekcja zachowań jest ustawiona tak, aby zezwalała zarówno na http, jak i https (nie wydaje się mieć wpływu na aplikację, jeśli oba są dozwolone)
I przenosimy sekcję powiązań do własnego pliku;
W pliku bindings.config przełączamy zabezpieczenia w oparciu o protokół
Teraz inżynierowie na miejscu muszą jedynie zmienić plik Bindings.Config i Client.Config, w którym przechowujemy rzeczywisty adres URL dla każdego punktu końcowego.
W ten sposób możemy zmienić punkt końcowy z http na https iz powrotem, aby przetestować aplikację bez konieczności zmiany kodu.
Mam nadzieję że to pomoże.
źródło
Aby ponownie zdefiniować pytanie w PO:
Samouczki WCFStorm rozwiązują ten problem w pracy z IIS i SSL .
Ich rozwiązanie działało dla mnie:
Ostatni punkt punktu w pozycji (1) oznacza usunięcie prefiksu przestrzeni nazw, który VS poprzedza atrybutem kontraktu punktu końcowego, domyślnie „ServiceReference1”
więc w app.config, który ładujesz do WCFStorm, który chcesz dla ListsService:
źródło
Potrzebowałem następujących powiązań, aby mój działał:
źródło
wsHttpBinding jest problemem, ponieważ silverlight go nie obsługuje!
źródło