2016-05-16 6 views
0

Dinge, die ich zu tun haben und bereits getan:Host-WCF auf bestehende MVC Website

  1. WCF-Dienst zu einem vorhandenen Mvc Web-App hinzufügen. unter einem Ordner ex:/Service/Service1.svc

  2. Host der MVC-Site zu IIS, vollständig funktionierende Site getestet.

    namespace WebApplication3.Service 
    { 
        public class Service1 : IService1 
        { 
         public string DoWork() 
         { 
          return "some string"; 
         } 
        } 
    } 
    
    
    namespace WebApplication3.Service 
    { 
        [ServiceContract] 
        public interface IService1 
        { 
         [OperationContract] 
         [WebInvoke(Method = "GET")] 
         string DoWork(); 
        } 
    } 
    

und die Web-config:

<system.serviceModel> 
<bindings> 
    <basicHttpBinding> 
    <binding name="transportsecurity"> 
     <security mode="Transport"> 
     <transport clientCredentialType="None"></transport> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

<services> 
    <service name="WebApplication3.Service.Service1" behaviorConfiguration="mybehavior"> 
    <endpoint address="http://localhost/testsite/Service/Service1.svc" binding="basicHttpBinding" bindingConfiguration="transportsecurity" contract="WebApplication3.Service.IService1"> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="mybehavior"> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
    multipleSiteBindingsEnabled="true" /> 

, wenn ich den Dienst surfen auf IIS es Fehler nicht gefunden zeigt 404.

Dank!

Antwort

1

Wahrscheinlich ist die Endpunktadresse nicht korrekt/passend, je nachdem, wie Sie hosten.

Ändern Sie einfach die Endpunktadresse in eine leere Zeichenfolge.

<services> 
    <service name="WebApplication3.Service.Service1" behaviorConfiguration="mybehavior"> 
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="transportsecurity" contract="WebApplication3.Service.IService1"> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 

Sie haben dies auch als https (Transportsicherheit) konfiguriert, stellen Sie also sicher, dass Sie https URL verwenden. Für erste Tests würde ich vorschlagen, zuerst die Sicherheit zu entfernen und nur mit Basic-Binding arbeiten. Sobald es funktioniert, dann testen Sie mit Sicherheit.

Verwandte Themen