IIS 6でサービスをホストしようとしていますが、この例外が発生し続けます。
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
アセンブリが見つからないように見えることを除いて、まったく手がかりがありません。コードは、パブリッククラスで正しくコンパイルする必要があります。
ここに私の.svcファイルがあります:
<%@ ServiceHost Language="C#" Debug="true" Service="QS.DialogManager.Communication.IISHost.RecipientService" CodeBehind="RecipientService.svc.cs" %>
Nothinを含む非常にシンプルなサービスを作成しようとしましたが、これが機能するかどうかも確認しますが、それでも同じ古いエラーが表示されます。
The type 'IISHost.Service1', provided as the Service attribute value in the ServiceHost directive could not be found.
オプション1:
このメッセージは、多くの場合、IIS 7構成の問題が原因です。サービスが存在するフォルダーを指す仮想ディレクトリの作成に慣れている場合、それは機能しなくなります。ここで、代わりに「アプリケーションの作成...」オプションを使用する必要があります。
その他のオプション:
問題は、svc.csファイルにあるように、svcファイルの別のネームスペースにある可能性もあります。
Svcファイルでは、名前空間は次の形式である必要があります。
Service="Namespace.SvcClassName"
これはおそらく「明白な」答えであることは知っていますが、少しつまずきました。プロジェクトのdllがbinフォルダーにあることを確認してください。サービスが公開されたとき、それを公開した人は、それらがGACにあると考えたため、dllを削除しました。プロジェクト専用のもの(この場合はQS.DialogManager.Communication.IISHost.RecipientService.dll)はありませんでした。
非常に異なる理由で同じエラー。
このエラーは、.SVCファイルのサービス名の不一致が原因で発生します。おそらく、インターフェイスを実装しているサービスクラスの名前を変更した可能性があります。解決策は、.SVCファイルを開き、Service属性とCodeBehind属性を完全に一致させることです。 .SVCファイルは次のようになります
<%@ 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"%>
この例は、C#言語を使用し、デバッグを有効にしたServiceクラスを実装する.svcファイルであり、このクラスはService.csという名前のアプリフォルダー内にあり、ProductはServiceクラスの名前空間です。
また、サービス構成ファイルでそれぞれの変更を行ってください。
<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>
.svcファイルのServiceHostディレクティブから正しいタイプを参照していることを再確認してください。方法は次のとおりです...
同じ例外が発生しました。これは、タイプが.svcファイルに正しく記載されていないためです。
以下の修正で修正しました。
あなたの.svc.csにこのようなクラスがある場合
namespace Azh.Services.MyApp
{
public class WcfApp : FI.IWcfAppService
{
...
}
}
このため、.svcファイルは次のようになります。
<%@ ServiceHost Language="C#" Debug="true" Service="Azh.Services.MyApp.WcfApp" CodeBehind="WcfApp.svc.cs" %>
ローカルbinにサービスを提供するようにbinフォルダーパスを構成する必要があります。
私は実際に同じ問題を解決しました。ここに私の提案があります-エラーは、Service属性で参照されているオブジェクトが見つからないことを意味します。オブジェクトを見つけるには、アプリケーションまたはライブラリがbinフォルダーに出力を構築する必要があります。
アプリケーションのプロパティページを編集し、「bin」への出力パスを指定できます。
名前を変更した場合は、(Properties /)AssemblyInfo.cs
とサービスファイルのヘッダーが正しいことを確認してください。
ServiceName.svc
<%@ ServiceHost Language="C#" Debug="true" Service="Company.Namespace.WcfApp" CodeBehind="WcfApp.svc.cs" %>
Service.svc.cs
の名前空間との整合
Svcファイルが存在するbinフォルダーにサービスDLLがありました。 DLLをルートbinフォルダーに移動すると、問題が解決しました。
これは些細に聞こえるかもしれませんが、言及する価値があります:(Visual Studioで)サービスをbuildする必要があります-DLLが作成されますbinサブフォルダー。
サービスがサーバーに「デプロイ」されると、そのbinフォルダーにはそのDLLファイルが必要になります-そうでない場合、このエラーがスローされます...
この問題が発生しました-私のサービスタイプはGACにありました。タイプを含むdllをbinフォルダーに追加するとうまくいきますが、GACにあるように、これは私が望んでいたものではありませんでした。最終的にこれをサービスのweb.configに追加しました
<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>
binフォルダーにDLLを必要とせずに機能しました。
今日、このエラーに直面しました。理由は次のとおりです。 IISユーザーには、アプリケーションフォルダーにアクセスする権限がありません。アプリのルートフォルダーに読み取りアクセス許可を与えました。
また、Microsoft.ServiceModel.Samples.Calculator WCFサンプルを試してこの問題に遭遇しました。 IIS 5.1を使用しています。自動生成されたWebサイト(servicemodelsamples)がアプリケーションではないことを確認することで解決しました。フォルダを右クリックし、「プロパティ」をクリックして、「作成」ボタンをクリックします。
私の場合、仮想ディレクトリを右クリックし、「アプリケーションに変換」を選択してください。
「ServiceHostディレクティブのサービス属性値が見つかりませんでした」という特定のフレーバーの場合、これに対する2つのキー:問題(1)Silverlightで作業している場合は、Silverlight WCF対応サービスを使用する必要があります。 Silverlight WCFサービス。これにより、バインディングのWeb.Configが更新され、タイプが表示されます。 (2)新しいサービスのクラス名をサービス名に一致させます。ここでの目標はwsdlを作成することです。これにより、SilverlightクライアントとWebにサービスの機能が公開されていることがわかります。サービスをクラスに一致させると役立ちます。名前が大きくなったら、Web.Configを3か所(serviceBehaviors、services、bindings)で編集する必要があります。
この問題を抱える人々を支援するための非常に多くの誠実な試みがありましたが、この記事はSilverlightソリューション用であり、クライアント/ Web構成でSilverlight 3を使用していない人には当てはまらない可能性があることを強調する必要があります。
それが役に立てば幸い。
私は同じ問題を抱えていましたが、何が原因かはわかりませんでした。デバッグからリリースに変更して、新しいインスタンスのデバッグ/開始を使用して実行することで解決しました。その後、リリースとデバッグの両方で実行されました。それは魔法だった...
マークアップ(svc)ファイルにnamespace.classnameのサービス属性があり、コードビハインドがclassname.svc.csになることを確認してください
ソリューションを再構築する
ローカルIISからアプリプールを1回再起動します。
同じソリューションで最初のSilverlight対応WCFのサービス参照を追加しようとすると、このエラーが発生しました。 .Webプロジェクトをビルドするだけで、動作し始めました。
サービス参照を追加する前にソリューションを構築すると、問題が解決しました。
私は同じ問題を抱えていて、このスレッドを見つけて、nogo以外はすべて試しました。
その後、さらに4時間を無駄に費やします。
次に、コンパイル設定が64ビットからx86に変更されたことを発見しました。私がそれを64ビットに戻したとき、それは働きました。正確な理由はわかりませんが、IISアプリケーションプールが32ビットアプリケーションを許可するように設定されていない可能性があります。
サービスにサービスの参照を追加するか、dllをコピーします。