2016-09-14 6 views
0

Ich habe 3 technische Fragen zu tun, die mit dem Schreiben eines Webdienstes verbunden sind, der beim Aufruf von localhost z. B. ausgelöst wird, damit er Ihnen eine Nachricht zurückgibt, sobald Sie localhost/was auch immer oder nur localhost eingeben.Wie kann ich einem Endpunkt meinen Webservice anhören lassen?

Wie erhalten Sie einen Endpunkt zum Abhören Ihres Webservice, wie zum Beispiel den localhost-Endpunkt? Mit anderen Worten, wie erhalten Sie eine Webseite, die mit Ihrem geschriebenen Webservice in Verbindung gebracht werden kann?

Wenn ich versuche, Chrom zu laufen aus MS Visual Studio bekomme ich folgende Fehlermeldung:

Failed to add a service. Service metadata may not be accessible. Make sure your service is running and exposing metadata.

gefolgt von:

Error: Cannot obtain Metadata from Service1.svc If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at Metadata contains a reference that cannot be resolved: ''. There was no endpoint listening at that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. The remote server returned an error: (404) Not Found.HTTP GET Error
URI: The HTML document does not contain Web service discovery information.

Hier mein Service-Code wird von webconfig Datei gefolgt, wenn das ist irgendeine Hilfe.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Runtime.Serialization; 
using System.ServiceModel; 
using System.ServiceModel.Activation; 
using System.ServiceModel.Web; 
using System.Text; 

namespace MyNameIsTwitter 
{ 
    [ServiceContract(Namespace = "http://localhost/")] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class Service1 
    { 
     // To use HTTP GET, add [WebGet] attribute. (Default ResponseFormat is WebMessageFormat.Json) 
     // To create an operation that returns XML, 
     //  add [WebGet(ResponseFormat=WebMessageFormat.Xml)], 
     //  and include the following line in the operation body: 
     //   WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; 
     [OperationContract] 
     public string DoWork() 
     { 
      // Add your operation implementation here 
      int error = 0; 
      string url = HttpContext.Current.Request.Url.AbsoluteUri; 
      // http://localhost:1302/TESTERS/Default6.aspx 

      string path = HttpContext.Current.Request.Url.AbsolutePath; 
      // /TESTERS/Default6.aspx 

      string host = HttpContext.Current.Request.Url.Host; 
      // localhost 

      switch (host) 
      { 
       case "//localhost": switch (path) 
            { 
             case "": error = 1; 
               break; 
             default: break; 
            } 
            break; 
       default: break; 
      } 
      if (error == 1) 
      { 
       return "Try /hello/:name"; 
      } 
      else 
      { 
       return "worked"; 
      } 
     } 

     // Add more operations here and mark them with [OperationContract] 
    } 
} 

web.config

<?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> 
     <system.web> 
      <compilation debug="true" targetFramework="4.5" /> 
      <httpRuntime targetFramework="4.5" /> 
     </system.web> 

     <system.serviceModel> 
      <behaviors> 
       <endpointBehaviors> 
        <behavior name="MyNameIsTwitter.Service1AspNetAjaxBehavior"> 
         <enableWebScript /> 
        </behavior> 
       </endpointBehaviors> 
      </behaviors> 
      <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
       multipleSiteBindingsEnabled="true" /> 
      <services> 
       <service name="MyNameIsTwitter.Service1"> 
       <endpoint address="localhost/" behaviorConfiguration="MyNameIsTwitter.Service1AspNetAjaxBehavior" 
        binding="webHttpBinding" contract="MyNameIsTwitter.Service1" /> 
       </service> 
      </services> 
     </system.serviceModel> 
    </configuration> 

Antwort

0

Sie müssten MEX verstehen: Try this

Und über Ihre 404-Fehler. Sie müssen Ihren Webdienst auf Ihrem lokalen IIS ausführen lassen.

+0

Vielen Dank Mike für diesen schönen Artikel. Es scheint ein Schritt in die richtige Richtung zu sein, da ich nach dem Implementieren dessen, was der Artikel mir in der Web-Konfigurationsdatei sagt, zumindest eine Webseite mit der URL bekommen habe: http: // localhost: 63622/aber jetzt bekomme ich der HTTP-Fehler 403.14 - Forbidden Der Webserver ist konfiguriert, den Inhalt dieses Verzeichnisses nicht aufzulisten. Ich nehme an, das hat etwas mit der Konfiguration von IIS auf meinem Laptop zu tun, aber leider kann ich Ihnen keine vollen Noten geben, bis Sie mir helfen, das zu beheben. Warum machen Menschen das Leben komplizierter? Es sollte nicht –

+0

ein IIS-Konfigurationsproblem sein, und es könnte mehrere Gründe dafür geben, wie Authentifizierungsmodus nicht richtig eingestellt oder Standardseite nicht verfügbar. Sie können dieses Problem auch beheben, indem Sie eine andere Instanz von Visual Studio ausführen, die Ihren Web-Service bereitstellt und diese URL in Ihrer Anwendung verwendet. – Mike

+0

Ich denke du hast Recht Mike. Microsoft bietet keinen guten Support für die im Windows 10-Betriebssystem enthaltene Version. Mit diesem Laptop, den ich benutze, habe ich von Windows 7 auf Windows 10 aktualisiert, und ich kann nicht einmal inetmanager.exe finden, wie in der Microsoft-Dokumentation. Ich telefoniere jetzt mit einem Microsoft-Typ und versuche, IIS 10 herunterzuladen, welches die richtige Version ist. Hoffentlich schließt das inetmanager ein, der mir helfen wird, diesen HTTP-Fehler 403.14 zu beheben. Was ich bemerke, ist der Mangel an guter Unterstützung von Microsoft hauptsächlich. Es ist, als ob sie dir ein verwässertes Produkt verkaufen wollen. –

Verwandte Themen