2013-02-20 14 views
6

パラメータにドイツウムラウトが含まれているクラスEndpointAddressのインスタンスを作成しようとしています。ドイツ語ウムラウト(EndpointAddress in net.tcp)

について:

EndpointAddress endpointAddress = new EndpointAddress("net.tcp://süd:8001/EmployeeService"); 

それは、常に与えられたURIが解析できないという例外がスローされます。ウムラウトをエンコードされた値に置き換えようとしましたが、同じ例外が発生します。

無効なURI:ホスト名を解析できませんでした。

誰も以前に同じ問題を抱えていましたか? ありがとうございます。

+0

どのような変換が行われましたか?例外は何を言いますか? –

+1

'新しいEndpointAddress(" net.tcp://süd:8001/EmployeeService ")' .net4.5でうまく動作します。古いバージョンを使用していますか? – spender

+2

[国際リソース識別子(IRI)解析](http://msdn.microsoft.com/en-us/library/bb968786.aspx)を有効にしましたか? [](http://msdn.microsoft.com/en-us/library/bb882600.aspx)[国際化ドメイン名(IDN)解析]を有効にすることもできます(http://msdn.microsoft.com/en/ -us/library/bb968786.aspx)。 [] – dtb

答えて

4

おそらく、パーサーはinternationalized domain names(IDN)の操作方法を知らないでしょう。そのようなホスト名を使用するには、Punycodeを自分でエンコードする必要があります。私はそれを使用していないが、コア機能IdnMapping.GetAsciiは適して見えることがあります -

EndpointAddress endpointAddress = new EndpointAddress(
    "net.tcp://" + IdnMapping.GetAscii("süd") + ":8001/EmployeeService" 
); 

のようなものは、おそらく(それは、C#は私の言語ではありませんしない場合、私を許して)動作します。

+0

punycodeを使用しています。私はそれについて知らなかった。 – spender

+0

ホッブズ、答えてくれてありがとう。 今、別の問題に直面しています。私は原因が同じだと思う。 次に、DuplexChannelFactoryのインスタンスを作成しようとしています。私は持っています:_factory =新しいDuplexChannelFactory (新しいInstanceContext(callbackImplementation)、バインディング、endpointAddress); _channel = _factory.CreateChannel(); (ICommunicationObjectとしての_channel).Open(); Open()でクラッシュします。IdnMappingを使用した後、私はnet.tcp:// xn - sd-xka:8001/EmployeeServiceを取得します。 Open()を実行すると、「No host is DNS xns - sd-xka」というメッセージが表示されます。 ありがとうございました – Nenad

+0

@Nenadこれは同じ問題ではありません。存在しないホストには接続できません。 :-P – hobbs

-2

てみさらなる参照のため

string uri = System.Uri.EscapeDataString("net.tcp://süd:8001/EmployeeService"); 

ルックhereを使用します。

1

この種のURIを使用する前に、IRIとIDNの解析を有効にする必要があります。

は、あなたのapp.configにこれを追加します。

<configuration> 
    <uri> 
     <idn enabled="All" /> 
     <iriParsing enabled="true" /> 
    </uri> 
</configuration> 
2

だけ余分なメモとして。 WCFは.Net 4.5でIDN(ホスティングサービス+ IDN名のサービスに話しているWCFクライアント)のサポートを追加しました。このdocumentationにはこれに関する情報があります。

この例外は、.net 4.5に対してアプリをコンパイルするとすぐに消えます。

関連する問題