Ich versuche, meinen Dienst mit IIS 6 zu hosten, erhalte jedoch weiterhin diese Ausnahme.
Server Error in '/WebServices' Application.
--------------------------------------------------------------------------------
The type 'QS.DialogManager.Communication.IISHost.RecipientService', provided as the Service attribute value in the ServiceHost directive could not be found.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: The type 'QS.DialogManager.Communication.IISHost.RecipientService', provided as the Service attribute value in the ServiceHost directive could not be found.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[InvalidOperationException: The type 'QS.DialogManager.Communication.IISHost.RecipientService', provided as the Service attribute value in the ServiceHost directive could not be found.]
System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +6714599
System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +604
System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +46
System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +654
[ServiceActivationException: The service '/WebServices/dm/RecipientService.svc' cannot be activated due to an exception during compilation. The exception message is: The type 'QS.DialogManager.Communication.IISHost.RecipientService', provided as the Service attribute value in the ServiceHost directive could not be found..]
System.ServiceModel.AsyncResult.End(IAsyncResult result) +15626880
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +15546921
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +265
System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +227
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.3082; ASP.NET Version:2.0.50727.3082
Ich habe absolut keine Ahnung, außer dass es so aussieht, als ob es meine Baugruppen nicht finden kann. Der Code sollte mit öffentlichen Klassen korrekt kompiliert werden.
Hier ist meine .svc-Datei:
<%@ ServiceHost Language="C#" Debug="true" Service="QS.DialogManager.Communication.IISHost.RecipientService" CodeBehind="RecipientService.svc.cs" %>
Ich habe versucht, einen sehr sehr einfachen Dienst zu erstellen, der nur nichts enthält, um zu sehen, ob dies funktionieren würde, aber immer noch der gleiche alte Fehler auftritt.
The type 'IISHost.Service1', provided as the Service attribute value in the ServiceHost directive could not be found.
Antworten:
Option Eins :
Diese Meldung ist häufig auf ein IIS 7-Konfigurationsproblem zurückzuführen. Wenn Sie es gewohnt sind, ein virtuelles Verzeichnis zu erstellen, das auf den Ordner verweist, in dem sich Ihr Dienst befindet, funktioniert dies nicht mehr. Jetzt müssen Sie stattdessen die Option "Anwendung erstellen ..." verwenden.
Andere Optionen :
quelle
Das Problem könnte auch ein anderer Namespace in der SVC-Datei sein als in der SVCC-Datei.
In SVC-Dateien muss der Namespace das folgende Format haben.
Service="Namespace.SvcClassName"
quelle
Ich weiß, dass dies wahrscheinlich die "offensichtliche" Antwort ist, aber es hat mich ein bisschen gestolpert. Stellen Sie sicher, dass sich im Ordner bin eine DLL für das Projekt befindet. Als der Dienst veröffentlicht wurde, hat der Typ, der ihn veröffentlicht hat, die DLLs gelöscht, weil er dachte, sie wären im GAC. Die speziell für das Projekt (in diesem Fall QS.DialogManager.Communication.IISHost.RecipientService.dll) war nicht vorhanden.
Gleicher Fehler aus einem ganz anderen Grund.
quelle
Dieser Fehler tritt aufgrund einer Nichtübereinstimmung des Dienstnamens in der SVC-Datei auf. Möglicherweise haben Sie den Namen der Serviceklasse geändert, die die Schnittstelle implementiert. Die Lösung besteht darin, die SVC-Datei zu öffnen und genau mit dem Service-Attribut und dem CodeBehind-Attribut übereinzustimmen. Ihre .SVC-Datei sollte also so aussehen
<%@ ServiceHost Language="Language you are using" Debug="bool value to enable debugging" Service="Service class name that is implementing your Service interface" Codebehind="~/Appcode/Class implementing interface.cs"%>. for eg. <%@ ServiceHost Language="C#" Debug="true" Service="Product.Service" CodeBehind="~/AppCode/Product.Service.cs"%>
Dieses Beispiel bezieht sich auf eine SVC-Datei, die die C # -Sprache verwendet, mit aktiviertem Debugging, einer Implementierungsschnittstelle für die Serviceklasse. Diese Klasse befindet sich im App-Ordner mit dem Namen Service.cs und Product ist der Namespace für die Serviceklasse.
Bitte nehmen Sie auch entsprechende Änderungen in der Service-Konfigurationsdatei vor.
<system.serviceModel> <services> <service name="Product.Service" behaviorConfiguration="ServiceBehavior"> <endpoint address="" binding="wsHttpBinding" contract="Product.Iservice"> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <behaviors> <behavior name="ServiceBehavior"> <serviceMetaData httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </behaviors> </system.serviceModel>
quelle
Service="MyServicesProxy.Client.OpenClientService"
Stellen Sie sicher, dass Sie auf den richtigen Typ aus der ServiceHost-Direktive in der SVC-Datei verweisen. Hier ist wie...
quelle
Ich hatte die gleiche Ausnahme, dies liegt an dem Typ, der in der .svc-Datei nicht korrekt erwähnt wird
Ich habe mit unten korrigiert.
wenn Ihre .svc.cs eine solche Klasse hat
namespace Azh.Services.MyApp { public class WcfApp : FI.IWcfAppService { ... } }
dafür sollte die .svc-datei so aussehen
<%@ ServiceHost Language="C#" Debug="true" Service="Azh.Services.MyApp.WcfApp" CodeBehind="WcfApp.svc.cs" %>
quelle
Sie sollten den Pfad Ihres Bin-Ordners so konfigurieren, dass der lokale Bin gewartet wird.
quelle
C:\Folder\SVC_ServiceFolder\bin
. Ich musste einige doppelte Konfigurations-Tags entfernen.Wenn Sie etwas umbenannt haben, überprüfen Sie die (Eigenschaften /)
AssemblyInfo.cs
korrekt ist, sowie der Header in der Servicedatei.ServiceName.svc
<%@ ServiceHost Language="C#" Debug="true" Service="Company.Namespace.WcfApp" CodeBehind="WcfApp.svc.cs" %>
Anpassen an Ihren Namespace in Ihrem
Service.svc.cs
quelle
Ich habe praktisch das gleiche Problem gelöst. Hier ist mein Vorschlag: Der Fehler bedeutet, dass das Objekt, auf das im Service-Attribut verwiesen wird, nicht gefunden wird. Damit das Objekt gefunden werden kann, muss die Anwendung oder Bibliothek eine Ausgabe im Ordner bin erstellen.
Sie können die Eigenschaftsseite der Anwendung bearbeiten und den Ausgabepfad zu 'bin' angeben.
quelle
Ich hatte dieses Problem - mein Servicetyp war im GAC. Es würde funktionieren, wenn ich die DLL mit dem Typ zum bin-Ordner hinzufügen würde, aber da es im GAC war, war dies NICHT das, was ich wollte. Ich habe dies schließlich zur web.config für den Dienst hinzugefügt
<system.web> <customErrors mode="RemoteOnly" /> <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="[name in GAC], Version=[version in GAC], Culture=neutral, PublicKeyToken=[ac token]" /> </assemblies> </compilation> </system.web>
und es funktionierte ohne DLLs im Ordner bin.
quelle
Zwei Schlüssel dazu für bestimmte Varianten des 'Service-Attributwerts in der ServiceHost-Direktive konnten nicht gefunden werden'-Problem: (1) Wenn Sie in Silverlight arbeiten, sollten Sie den Silverlight WCF-fähigen Dienst verwenden, nicht den Nicht-Dienst Silverlight WCF Service; Dadurch wird Web.Config für die Bindungen aktualisiert und der Typ wird sichtbar. (2) Ordnen Sie den Klassennamen im neuen Dienst dem Dienstnamen zu. Ziel ist es, eine WSDL zu erstellen, damit Sie wissen, dass die Funktionalität des Dienstes Ihrem Silverlight-Client und dem Web zugänglich ist. Es ist hilfreich, wenn der Service der Klasse entspricht. Wenn Sie die Namen verputzt haben, müssen Sie die Web.Config an drei Stellen bearbeiten (serviceBehaviors, services und bindings).
Es gab so viele aufrichtige Versuche, Leuten mit diesem Problem zu helfen, die für mich nicht hilfreich waren, dass betont werden sollte, dass diese Beschreibung für eine Silverlight-Lösung gilt und möglicherweise nicht für jemanden gilt, der Silverlight 3 nicht in einer Client / Web-Konfiguration verwendet .
Ich hoffe es hilft.
quelle
Ich hatte das gleiche Problem, aber keine Ahnung, was es verursacht hat. Ich habe es gelöst, indem ich mit Debug / Start New Instance von Debug zu Release and Run gewechselt habe. Danach lief es sowohl in Release als auch in Debug. Es war Magie ...
quelle
Ich bin auch auf dieses Problem gestoßen, als ich das WCF-Beispiel Microsoft.ServiceModel.Samples.Calculator ausprobiert habe. Ich verwende IIS 5.1. Ich habe das Problem behoben, indem ich sichergestellt habe, dass die automatisch generierte Website (Servicemodelle) keine Anwendung ist. Klicken Sie mit der rechten Maustaste auf den Ordner, klicken Sie auf "Eigenschaften" und klicken Sie auf die Schaltfläche "Erstellen".
quelle
Ich hatte meine Service-DLLs im Ordner bin, in dem sich die SVC-Datei befand. Das Verschieben der DLLs in den Ordner "root bin" löste das Problem.
quelle
In meinem Fall Rechtsklick auf Virtual Directory und wählen Sie "In Anwendung konvertieren" funktioniert!
quelle
Ich war heute mit diesem Fehler konfrontiert, Grund war; Der IIS-Benutzer hat keine Berechtigung, auf den Anwendungsordner zuzugreifen. Ich habe die Leseberechtigungen für den App-Stammordner erteilt.
quelle
Das mag trivial klingen, ist aber erwähnenswert: Sie müssen bauen den Service (in Visual Studio) - dann eine DLL wird in der Bin Unterordner angelegt werden.
Wenn der Dienst auf einem Server "bereitgestellt" wird - dieser bin-Ordner muss diese DLL-Datei enthalten -, wird dieser Fehler andernfalls ausgelöst ...
quelle
Fügen Sie eine Referenz des Dienstes in Ihren Dienst ein oder kopieren Sie die DLL.
quelle
Das Erstellen der Lösung vor dem Hinzufügen der Servicereferenz löste mein Problem.
quelle
Ich habe diesen Fehler erhalten, als ich versucht habe, die Dienstreferenz für die erste Silverlight-fähige WCF in derselben Lösung hinzuzufügen. Ich habe gerade das .Web-Projekt erstellt und es hat funktioniert.
quelle
Ich hatte das gleiche Problem, fand diesen Thread, versuchte alle außer Nogo.
Dann verbringe ich weitere 4 Stunden verschwendete Zeit.
Dann stellte ich fest, dass sich die Kompilierungseinstellungen von 64 Bit auf x86 geändert hatten. Als ich es wieder auf 64 Bit änderte, funktionierte es. Ich weiß nicht genau warum, könnte aber sein, dass der IIS-Anwendungspool nicht für 32-Bit-Anwendungen eingestellt wurde.
quelle
Stellen Sie sicher, dass die Markup-Datei (svc) das Serviceattribut mit dem Namespace.classname und dem Codebehind classname.svc.cs hat
Erstellen Sie die Lösung neu
Starten Sie die App-Pools einmal vom lokalen IIS aus neu.
quelle