2010-12-02 9 views
0

私はこのように、それは使用する必要があるendpointaddressと私のホストを作成します。は、なぜ私は "HTTPがURLのhttpを登録することができませんでした:// +:80/MyServiceで/" WCFの例外を得るのですか

Uri endpointAddress = new Uri("http://127.0.0.1:5555/MyService"); 
ServiceHost host = new ServiceHost(myServiceType, endpointAddress); 
host.AddServiceEndpoint(implementedContract, basicHttpBinding, string.Empty); 

しかしとき後で行うhost.Open();「HTTPはURL http://+:80/MyService/を登録できませんでした。なぜなら、TCPポート80は別のアプリケーションによって使用されているためです」。結果は同じです。

host.AddServiceEndpoint(implementedContract, basicHttpBinding, endpointAddress); 

なぜポート80で何をしようとしますか?これをどうすれば解決できますか?

更新 より完全なコードサンプルを提供しようとしている間に、私は原因を見つけました。過去に私はこの作業を取得するためのURLからポートを削除する必要があると思われるが、今それが問題の原因を正確に何

ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); 
smb.ExternalMetadataLocation = new Uri(this.ExternalMetadataLocation); 
smb.HttpGetEnabled = true; 
smb.HttpGetUrl = this.RemovePort(this.EndpointAddress); 
host.Description.Behaviors.Add(smb()); 

次のように私はServiceMetadataBehaviorを追加しました。

Pratikが正しいです:メタデータが問題でした。もちろん、ポート80の問題は、そのポートを使って新しくインストールされたアプリケーションがあることです。

ありがとうございます、ありがとうございました、おしゃべり、

Miel。

+1

AddServiceEndpointとhost.openの間のコードを含む完全なテストケースのコードを投稿できますか?異なるホスト変数、またはあなたの呼び出しのいずれかがエラーを出す可能性が高いようです。 –

+0

@Paul +1は私により良い質問を書いてくれました。それが解決策を見つけることにつながった。 – Miel

+0

ソリューションを投稿できますか? –

答えて

1

これは、おそらくローカルIISサーバーによってエラーメッセージが示すように、ポート80が別のアプリケーションによって既に使用されているためです。 IISを停止して参照するか、別のポートを使用してみてください。 Vista以上では、netshコマンドを使用して、予約済みのポートを確認できます

BTW app.configファイルまたはweb.configファイルにhttpメタデータまたはmexエンドポイントがありますか?

+1

私はあなたがその点を逃したと思う。コードはポート80を使用しようとするべきではありません –

+0

Patrikは正しいです...なぜ落選ですか? +1 – sebagomez

1

次は私のために正常に動作します:

class Program 
{ 
    [ServiceContract] 
    public interface IMyService 
    { 
     [OperationContract] 
     void Test(); 
    } 

    public class MyService : IMyService 
    { 
     public void Test() 
     { 
      throw new NotImplementedException(); 
     } 
    } 

    static void Main() 
    { 
     var endpointAddress = new Uri("http://127.0.0.1:5555/MyService"); 
     using (var host = new ServiceHost(typeof(MyService), endpointAddress)) 
     { 
      var basicHttpBinding = new BasicHttpBinding(); 
      host.AddServiceEndpoint(typeof(IMyService), basicHttpBinding, string.Empty); 
      host.Open(); 
     } 
    } 
} 

は、たぶん、あなたが干渉している他のいくつかのコードを持っていますか?

関連する問題