従来の ASMX スタイルのサービスもホストする ASP.NET Web サイトでホストされる、新しく作成された WCF .SVC があります。
SVC に含まれている単一のメソッドを呼び出すと、次のメッセージが表示されます。
「メッセージを受け入れることができるリッスンしhttp://localhost/REDACTEDSITE/LicenseVerification.svc
ているエンドポイントがありませんでした。これは多くの場合、アドレスまたは SOAP アクションが正しくないことが原因です。詳細については、InnerException が存在する場合は参照してください。」
ただし、そのリンクをローカル マシンの任意のブラウザーに貼り付けて、「これは Windows© Communication Foundation サービスです。このサービスのメタデータ公開は現在無効になっています。」ページを取得できます。
IIS ログは、ブラウザーが GET 要求を発行し、200 応答を受信していることを示しています。WCF クライアントは POST 要求を発行し、404.0 応答を受信しています。
これらは私が使用した最新の構成設定です。それらはやや最小限です。
ホスト
<system.serviceModel>
<client entries for other services that work>
<services>
<service name="LicenseVerification.svc">
<endpoint address="LicenseVerification.svc"
binding="basicHttpBinding" bindingConfiguration="" contract="Management.ILicenseVerification" />
</service>
</services>
</system.serviceModel>
クライアント
<system.serviceModel>
<client>
<endpoint address="http://localhost/REDACTEDSITE/LicenseVerification.svc"
binding="basicHttpBinding" bindingConfiguration="" contract="Management.ILicenseVerification"
name="LicenseVerificationClient">
</endpoint>
</client>
</system.serviceModel>
契約する
[ServiceContract]
public interface ILicenseVerification
{
[WebInvoke(Method="GET")] //have tried WebGet()
[OperationContract]
LicenseInfo GetProfileLicenseInfo(string profileName);
}
サービス実装
public class LicenseVerification : ILicenseVerification
{
LicenseInfo ILicenseVerification.GetProfileLicenseInfo(string profileName)
{
ProfileInfo _pi = ProfileHelper.GetRequestedProfileInfo(profileName);
if (_pi == null)
{
return null;
}
return LicenseVerifier.GetLicenseInfo(_pi);
}
}
asp.net 4.0 の再登録、サービス モデルの修復、IIS の再起動、MS サービス構成ユーティリティを使用して手動で構成ファイルの破棄と再作成を試みましたが、まだ機能しません。
これらは小さなリクエスト (数 KB) であるため、サイズの問題ではないと思います。
突き出ているのは GET/POST だけですが、私が作成した SVC ではこれまで問題はありませんでした。
私のローカル環境は Win7/64、VS2010、.NET 4 です。
他に試してみることを教えてください。私はさまざまなSOの投稿を同じように選別しましたが、運がありませんでした(露骨に異なって見えるものでさえ)。