私の単純なサンプル wcf サービスは機能していましたが、突然、「WCF テスト クライアント」ダイアログでエンドポイント アドレスの入力を求められ始めました。
F5を押したときにブラウザ(IE 8)がポップアップして、この「WCFテストクライアント」が表示されるようになる原因を変更したことを思い出せません。
提供された編集ボックスに何を入力すればよいかわからなかったので、「http://localhost:4841/RestServiceImpl.svc」を試してみました (http://localhost:4841/RestServiceImpl.svc/xml/123 は引き続き動作しますVisual Studio の外部)
(ダイアログのタスクバーに「サービスが正常に追加されました」と表示されます) それを受け入れましたが、他には何もしません。「My Service Projects」ツリービューをクリックしても何も起こりません (子がありません)。
アップデート
新しい操作を IE8 から直接実行しようとすると、次のようになります。
「/」アプリケーションでサーバー エラーが発生しました。
コントラクト 'IRestServiceImpl' には、メソッド 'GET' と 'xml/{platypusId}' に相当する UriTemplate を使用した複数の操作があります。メッセージを明確にディスパッチするには、各操作で UriTemplate と Method の一意の組み合わせが必要です。WebGetAttribute または WebInvokeAttribute を使用して、操作の UriTemplate および Method 値を変更します。
これは、文字列を受け取る xml を返す操作を 1 つしか持てないということですか? 他の/元の方法は ...xml/{id}...
更新 2
これはコードであり、まだ失敗しています:
[ServiceContract]
public interface IRestServiceImpl
{
[OperationContract(Name="Foo")]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "xml/{id}")]
string XMLData(string id);
[OperationContract(Name="FooBar")]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "xml/{platypusId, anotherId}")]
string FirstTrial(string platypusId, string anotherId);
[OperationContract(Name="FooFooBar")]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "json/{id}")]
string JSONData(string id);
}
// 実装 (.svc) ファイル
public class RestServiceImpl : IRestServiceImpl
{
public string XMLData(string id)
{
return "You requested product " + id;
}
public string FirstTrial(string platypusId, string anotherID)
{
return "I reckon so" + platypusId + anotherID;
}
public string JSONData(string id)
{
return "You requested product " + id;
}
}