[解決済み] WCFメタデータに解決できない参照が含まれている
質問内容
このエラーについて数時間かけて検索し、Googleにあるものはほとんどすべてテストしました。
C#で、.NET4とVS2010を使用して、TCPを使用してサービスにアクセスしたいのですが、どうすればいいですか?
私は非常に小さなサービスを持っています。
namespace WcfService_using_callbacks_via_tcp
{
[ServiceContract(CallbackContract = typeof(ICallback), SessionMode = SessionMode.Required)]
public interface IService1
{
[OperationContract]
string Test(int value);
}
public interface ICallback
{
[OperationContract(IsOneWay = true)]
void ServerToClient(string sms);
}
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
public class Service1 : IService1
{
public string Test(int value)
{
ICallback the_callback = OperationContext.Current.GetCallbackChannel<ICallback>();
the_callback.ServerToClient("Callback from server, waiting 1s to return value.");
Thread.Sleep(1000);
return string.Format("You entered: {0}", value);
}
}
}
このWeb.configで。
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="WcfService_using_callbacks_via_tcp.Service1" behaviorConfiguration="Behaviour_Service1">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:5050/Service1" />
</baseAddresses>
</host>
<endpoint address="" binding="netTcpBinding" bindingConfiguration="DuplexNetTcpBinding_IService1" contract="WcfService_using_callbacks_via_tcp.IService1"/>
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="mexTcp" contract="IMetadataExchange"/>
</service>
</services>
<bindings>
<!--
TCP Binding
-->
<netTcpBinding>
<binding name="DuplexNetTcpBinding_IService1" sendTimeout="00:00:01"
portSharingEnabled="true">
</binding>
<binding name="mexTcp" portSharingEnabled="true">
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<!--
Behaviour to avoid a rush of clients and to expose metadata over tcp
-->
<behavior name="Behaviour_Service1">
<serviceThrottling maxConcurrentSessions="10000"/>
<serviceMetadata httpGetEnabled="true"/>
</behavior>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
そして、それをホストするためのこのコード。
static void Main(string[] args)
{
Uri base_address = new Uri("net.tcp://localhost:5050/Service1");
ServiceHost host = null;
try
{
// Create the server
host = new ServiceHost(typeof(Service1), base_address);
// Start the server
host.Open();
// Notify it
Console.WriteLine("The service is ready at {0}", base_address);
// Allow close the server
Console.WriteLine("Press <Enter> to stop the service.");
Console.ReadLine();
// Close it
host.Close();
}
catch (Exception ex)
{
// Opus an error occurred
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(string.Format("Host error:\r\n{0}:\r\n{1}", ex.GetType(), ex.Message));
Console.ReadLine();
}finally
{
// Correct memory clean
if(host != null)
((IDisposable)host).Dispose();
}
}
現在、クライアントを作成したいのですが、作成することができません。サービスリファレンスの追加とsvcutilを直接使用しましたが、このエラーが表示されます。
<ブロッククオート
C:♪Program Files (x86)♪Microsoft Visual Studio 10.0VC♪>svcutil.exe net.tcp://loc alhost:5050/Service1 Microsoft (R) サービスモデル メタデータツール [Microsoft (R) Windows (R) Communication Foundation, バージョン4.0.30319.1]. Copyright (c) Microsoft Corporation. 著作権について を予約しました。
からのメタデータのダウンロードを試みている。 'net.tcp://localhost:5050/Service1' で W S-Metadata Exchange を使用しています。この URL は DISCO をサポートしていません。マイクロソフト(R)サービスモデルメタデータツール [マイクロソフト(R)Windows(R)コミュニケーション ファンデーション バージョン 4.0.30319.1] Copyright (c) Microsoft Corporation. All rights reserved.
エラーです。net.tcp://localhost:5050/Service1 からメタデータを取得できません。
このサービスが Windows (R) Communication Foundation のサービスである場合 メタデータの公開が有効になっていることを確認してください。 を指定します。 メタデータ・パブリッシングを有効にする方法については、こちらを参照してください。 にあるMSDNドキュメントを参照してください。 http://go.microsoft.com/fwlink/?LinkId=65455 .
WS-Metadata交換エラー URI: net.tcp://localhost:5050/Service1
メタデータに解決できない参照が含まれています: 'net.tcp://localhost: 5050/Service1'.
ソケット接続が中断されました。これは、メッセージの処理にエラーが発生したか、受信タイムアウトを超えたことが原因である可能性があります。 リモートホスト、またはネットワークリソースに問題がある可能性があります。ローカル ソケットタイムアウトは「00:04:59.9863281」でした。
リモートホストに存在する接続を強制的に中断させた
さらにヘルプが必要な場合は、"svcutil /?"と入力してください。
そのため、サービスを問題なくホストすることはできますが、プロキシを作成することはできません。
ほぼ全ての設定を試しましたが、現在のweb.configが正しいようです。動作、セキュリティ、そしてエンドポイントによって使用されるmexを使用したバインディングがあります。
app.configを作成し、svcutil.exeと同じフォルダに設定してみました。
どうすればいいですか?
サービス設定が不足しています
<system.serviceModel>
<services>
<service name="WcfService_using_callbacks_via_tcp.Service1"
behaviorConfiguration="Behavior_Service1">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:5050/Service1" />
</baseAddresses>
</host>
<endpoint address="" contract="WcfService_using_callbacks_via_tcp.IService1"
binding="netTcpBinding" bindingConfiguration="DuplexNetTcpBinding_IService1" />
<endpoint address="mex" contract="IMetadataExchange" binding="mexTcpBindng" />
</service>
</services>
...
</system.serviceModel>
この設定により、コード内でベースアドレスを定義する必要がなくなります。
関連
-
[解決済み] デフォルトのエンドポイント要素が見つからない
-
[解決済み] (413) リクエストエンティティが大きすぎる|uploadReadAheadSize
-
[解決済み] WCFメタデータに解決できない参照が含まれている
-
[解決済み] w3wp.exeとは何ですか?
-
[解決済み] REST API / ウェブサービスを保護するためのベストプラクティス [終了しました]。
-
[解決済み] WCFサービスのREST / SOAPエンドポイント
-
[解決済み】Windows 8のIISでWCFサービスを提供できない。
-
[解決済み】WCFサービスからきれいなJSONを返すにはどうすればいいですか?
-
[解決済み] WcfTestClient.exe (Visual Studioの一部)はどこにありますか?
-
[解決済み] WCFサービスのタイムアウト値を増加させる
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] デフォルトのエンドポイント要素が見つからない
-
[解決済み] (413) リクエストエンティティが大きすぎる|uploadReadAheadSize
-
[解決済み] Windows 7のsvcutil.exeはどこにあるのですか?
-
[解決済み] WCFメタデータに解決できない参照が含まれている
-
[解決済み] w3wp.exeとは何ですか?
-
[解決済み] WCFサービスのREST / SOAPエンドポイント
-
[解決済み】Windows 8のIISでWCFサービスを提供できない。
-
[解決済み] WcfTestClient.exe (Visual Studioの一部)はどこにありますか?
-
[解決済み] すべてのWCF呼び出しにカスタムHTTPヘッダを追加するには?
-
[解決済み] WCFサービスのタイムアウト値を増加させる