• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd podczas dodawania odwołania do usługi WCF

VPS Starter Arubacloud
0 głosów
408 wizyt
pytanie zadane 30 sierpnia 2019 w C# przez Krst0 Obywatel (1,340 p.)

Witam, podczas dodawania odwołania do usługi WCF pojawia się błąd. Zacznę może od początku. A więc próbowałem dodać takie odwołanie na testowym projekcie i nie chciało mi to przejść i wystarczyło tylko zmienić znacznik w pliku .svc serwisu WCF (usunięcie CodeBehind) i wszystko ładnie śmigało. Spróbowałem więc przenieść to rozwiązanie do mojego głównego projektu i nie wiadomo z jakich powodów już mi to nie chce przejść. Po wielu próbach dalej mi się to nie udawało, więc jeszcze raz dla pewności sprawdziłem dla świeżego projektu jak wygląda sytuacja i niestety nawet na świeżym projekcie dodanie odwołania do usługi zwraca błąd. 

Moja usługa WCF nazywa się WcfService1 i mam tam pliki IService1.cs oraz Service1.svc. 

Znacznik wewnątrz Service1.svc:

<%@ ServiceHost Language="C#" Debug="true" Service="WcfService1.Service1" %>

Kod wewnątrz Service1.svc (całkowicie standardowy):

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

namespace WcfService1
{
    // UWAGA: możesz użyć polecenia „Zmień nazwę” w menu „Refaktoryzuj”, aby zmienić nazwę klasy „Service1” w kodzie, usłudze i pliku konfiguracji.
    // UWAGA: aby uruchomić klienta testowego WCF w celu przetestowania tej usługi, wybierz plik Service1.svc lub Service1.svc.cs w eksploratorze rozwiązań i rozpocznij debugowanie.
    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }

        public CompositeType GetDataUsingDataContract(CompositeType composite)
        {
            if (composite == null)
            {
                throw new ArgumentNullException("composite");
            }
            if (composite.BoolValue)
            {
                composite.StringValue += "Suffix";
            }
            return composite;
        }
    }
}

Kod wewnątrz IService.cs:

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

namespace WcfService1
{
    // UWAGA: możesz użyć polecenia „Zmień nazwę” w menu „Refaktoryzuj”, aby zmienić nazwę interfejsu „IService1” w kodzie i pliku konfiguracji.
    [ServiceContract]
    public interface IService1
    {

        [OperationContract]
        string GetData(int value);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);

        // TODO: dodaj tutaj operacje usługi
    }


    // Użyj kontraktu danych, jak pokazano w poniższym przykładzie, aby dodać typy złożone do operacji usługi.
    [DataContract]
    public class CompositeType
    {
        bool boolValue = true;
        string stringValue = "Hello ";

        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }

        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    }
}

Błąd, który pojawia się podczas dodawania odwołania do usługi:

Podczas pobierania „http://localhost:49823/Service1.svc/$metadata” wystąpił błąd.
Żądanie nie powiodło się. Komunikat o błędzie:
--
<!DOCTYPE html>
<html>
    <head>
        <title>Nie można odnaleźć typu „WcfService1.Service1” dostarczonego jako wartość atrybutu Service w dyrektywie ServiceHost lub w elemencie konfiguracji system.serviceModel/serviceHostingEnvironment/serviceActivations.</title>
        <meta name="viewport" content="width=device-width" />
        <style>
         body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 
         p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
         b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
         H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
         H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
         pre {font-family:"Consolas","Lucida Console",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt}
         .marker {font-weight: bold; color: black;text-decoration: none;}
         .version {color: gray;}
         .error {margin-bottom: 10px;}
         .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:pointer; }
         @media screen and (max-width: 639px) {
          pre { width: 440px; overflow: auto; white-space: pre-wrap; word-wrap: break-word; }
         }
         @media screen and (max-width: 479px) {
          pre { width: 280px; }
         }
        </style>
    </head>

    <body bgcolor="white">

            <span><H1>Błąd serwera w aplikacji '/'.<hr width=100% size=1 color=silver></H1>

            <h2> <i>Nie można odnaleźć typu „WcfService1.Service1” dostarczonego jako wartość atrybutu Service w dyrektywie ServiceHost lub w elemencie konfiguracji system.serviceModel/serviceHostingEnvironment/serviceActivations.</i> </h2></span>

            <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">

            <b> Opis: </b>Podczas wykonywania bieżącego żądania sieci Web wystąpił nieobsługiwany wyjątek. Aby uzyskać dodatkowe informacje o błędzie i miejscu jego występowania w kodzie, przejrzyj ślad stosu.

            <br><br>

            <b> Szczegóły wyjątku: </b>System.InvalidOperationException: Nie można odnaleźć typu „WcfService1.Service1” dostarczonego jako wartość atrybutu Service w dyrektywie ServiceHost lub w elemencie konfiguracji system.serviceModel/serviceHostingEnvironment/serviceActivations.<br><br>

            <b>Błąd źródła:</b> <br><br>

            <table width=100% bgcolor="#ffffcc">
               <tr>
                  <td>
                      <code>

Podczas wykonywania bieżącego żądania sieci Web został wygenerowany nieobsługiwany wyjątek. Informacje dotyczące pochodzenia i lokalizacji wyjątku można zidentyfikować przy użyciu poniższego śladu stosu wyjątku.                      </code>

                  </td>
               </tr>
            </table>

            <br>

            <b>Ślad stosu:</b> <br><br>

            <table width=100% bgcolor="#ffffcc">
               <tr>
                  <td>
                      <code><pre>

[InvalidOperationException: Nie można odnaleźć typu „WcfService1.Service1” dostarczonego jako wartość atrybutu Service w dyrektywie ServiceHost lub w elemencie konfiguracji system.serviceModel/serviceHostingEnvironment/serviceActivations.]
   System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +57433
   System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) +1489
   System.ServiceModel.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity) +53
   System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) +666

[ServiceActivationException: Nie można aktywować usługi „/Service1.svc”, ponieważ wystąpił wyjątek podczas kompilacji. Komunikat dotyczący wyjątku: Nie można odnaleźć typu „WcfService1.Service1” dostarczonego jako wartość atrybutu Service w dyrektywie ServiceHost lub w elemencie konfiguracji system.serviceModel/serviceHostingEnvironment/serviceActivations..]
   System.Runtime.AsyncResult.End(IAsyncResult result) +513037
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +182
   System.ServiceModel.Activation.ServiceHttpHandler.EndProcessRequest(IAsyncResult result) +12
   System.Web.CallHandlerExecutionStep.InvokeEndHandler(IAsyncResult ar) +161
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +182
   System.ServiceModel.Activation.ServiceHttpHandler.EndProcessRequest(IAsyncResult result) +12
   System.Web.CallHandlerExecutionStep.InvokeEndHandler(IAsyncResult ar) +161
   System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +128
</pre>                      </code>

                  </td>
               </tr>
            </table>

            <br>

            <hr width=100% size=1 color=silver>

            <b>Informacje o wersji:</b> Wersja Microsoft .NET Framework:4.0.30319; Wersja ASP.NET:4.8.3815.0

            </font>

    </body>
</html>
<!-- 
[InvalidOperationException]: Nie można odnaleźć typu „WcfService1.Service1” dostarczonego jako wartość atrybutu Service w dyrektywie ServiceHost lub w elemencie konfiguracji system.serviceModel/serviceHostingEnvironment/serviceActivations.
   w System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
   w System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
   w System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity)
   w System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
[ServiceActivationException]: Nie można aktywować usługi „/Service1.svc”, ponieważ wystąpił wyjątek podczas kompilacji. Komunikat dotyczący wyjątku: Nie można odnaleźć typu „WcfService1.Service1” dostarczonego jako wartość atrybutu Service w dyrektywie ServiceHost lub w elemencie konfiguracji system.serviceModel/serviceHostingEnvironment/serviceActivations..
   w System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
   w System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)
   w System.ServiceModel.Activation.ServiceHttpHandlerFactory.ServiceHttpHandler.EndProcessRequest(IAsyncResult result)
   w System.Web.HttpApplication.CallHandlerExecutionStep.InvokeEndHandler(IAsyncResult ar)
   w System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result)
   w System.ServiceModel.Activation.ServiceHttpHandlerFactory.ServiceHttpHandler.EndProcessRequest(IAsyncResult result)
   w System.Web.HttpApplication.CallHandlerExecutionStep.InvokeEndHandler(IAsyncResult ar)
   w System.Web.HttpApplication.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar)
-->
--.
Metadane zawierają odwołanie, którego nie można rozpoznać: „http://localhost:49823/Service1.svc”.
Nie można aktywować żądanej usługi „http://localhost:49823/Service1.svc”. Więcej informacji można znaleźć w dziennikach śledzenia serwera.
Jeśli usługa została zdefiniowana w bieżącym rozwiązaniu, spróbuj skompilować rozwiązanie i dodać ponownie odwołanie do usługi.

Wszystko byłoby zrozumiałe, gdyby nie to, że wcześniej na testowym pustym projekcie wszystko śmiagało, a teraz nie mogę tego zrobić. 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 625 wizyt
pytanie zadane 28 grudnia 2015 w C# przez Surykat Stary wyjadacz (14,760 p.)
0 głosów
1 odpowiedź 354 wizyt
pytanie zadane 30 listopada 2017 w C i C++ przez ayo1001 Obywatel (1,890 p.)
0 głosów
3 odpowiedzi 75,572 wizyt
pytanie zadane 7 grudnia 2017 w Sieci komputerowe, internet przez Dynamix19 Nowicjusz (120 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...