2011-11-15 6 views
0

私はWASの下でNetTcpバインディングとメタデータを実装するのに成功しましたが、WAS/IISの下のnetMsmqBindingに問題があります。簡単に言えば、WAS/IISではなく、Self Hosted NetMsmqバインディングアプリケーション用のMEXを実装できます。それはWASが私が自己ホストされたアプリで任意のアドレスを使用できる場所で使用するアドレスのいずれかを拒否しているようです。私は自己ホスト型でこれを行うことができますつまり:WCF - メタデータを生成できません/ IISでNetMsmqバインディングのMEXを実装しましたか?

<system.serviceModel> 
    <services> 
     <service name="Microsoft.Samples.MSMQTransactedSample.OrderProcessorService" behaviorConfiguration="OrderProcessorServiceBehavior"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8000/ServiceModelSamples/service" /> 
      </baseAddresses> 
     </host> 
     <!-- Define NetMsmqEndpoint --> 
     <endpoint address="net.msmq://localhost/private/ServiceModelSamplesTransacted" binding="netMsmqBinding" bindingConfiguration="TransactedBinding" contract="Microsoft.Samples.MSMQTransactedSample.IOrderProcessor" /> 
     <!-- the mex endpoint is exposed at http://localhost:8000/ServiceModelSamples/service/mex --> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="OrderProcessorServiceBehavior"> 
      <serviceMetadata httpGetEnabled="True" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <netMsmqBinding> 
     <binding name="TransactedBinding"> 
      <security mode="None" /> 
     </binding> 
     </netMsmqBinding> 
    </bindings> 
    </system.serviceModel> 

Hoever、私はWASで似たようなを試し、それはそれはmetdataをホストしています何のエンドポイントはアドレス8000でliseningないと言います。誰かが私には、メタデータを取得したり、WASにNetMsmqのためのMEXの実装を支援することができます:

<system.serviceModel> 
    <bindings> 
     <netMsmqBinding> 
     <binding name="MsmqBindingNonTransactionalNoSecurity" exactlyOnce="false"> 
      <security mode="None"/> 
     </binding> 
     </netMsmqBinding> 
    </bindings> 
    <services> 
     <service name="Portal.LoadSim.Services.MsmqService" behaviorConfiguration="PortalServiceBehavior"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8000/PortalLoadSimServices10/MsmqService"/> 
      </baseAddresses> 
     </host> 
     <!-- Define NetMsmqEndpoint --> 
     <endpoint address="net.msmq://localhost/private/PortalLoadSimServices10/MsmqService.svc" binding="netMsmqBinding" bindingConfiguration="MsmqBindingNonTransactionalNoSecurity" contract="Portal.LoadSim.Shared.IMsmqService" /> 
     <!-- the mex endpoint is exposed at http://localhost:8000/PortalLoadSimServices10/MsmqService/mex --> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 

     </service> 

    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="PortalServiceBehavior"> 
      <!-- 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> 
    </system.serviceModel> 

答えて

0

あなたはあなたのサービスのためのURLへのアクセス制御を追加する必要があります。このコマンドは、あなたのために働く必要があります。これはあなたの問題をanwerない:

netsh http add urlacl url=http://localhost:8000/PortalLoadSimServices10/MsmqService user="NT AUTHORITY\NetworkService" listen=yes 

は、エントリ

delete urlacl url=http://localhost:8000/PortalLoadSimServices10/MsmqService 

HTH

UPDATEを削除します。これは、サービスを自己ホストアプリケーションとして実行し、非標準のアカウントで実行したい場合に実行します。すみませんでした。私は自宅でサンプルアプリケーションであなたの設定を使用しようとしたと私はそれを動作させるために2つのことをしなければならなかった - 1つは、パスとsvcファイルの名前(例:PortalLoadSimServices10/MsmqService.svc)基本アドレスを使用するのではなく、IISホストアプリケーションのsvcファイルを参照するだけです。また、iisが正しくアクセスできるように、キューのアクセス許可を変更する必要があります。これがあなたの問題を解決すれば教えてください。

+0

「http:// localhost:8000/PortalLoadSimServices10/MsmqService/mex /」をダウンロード中にエラーが発生しましたリモートサーバに接続できませんターゲットマシンが積極的にそれを拒否したため接続できませんでした127.0.0.1 :8000。メッセージを受け入れることができるhttp:// localhost:8000/PortalLoadSimServices10/MsmqService/mex /でリッスンしているエンドポイントはありませんでした。これは、しばしば不正なアドレスまたはSOAPアクションによって引き起こされます。詳細については、InnerException(存在する場合)を参照してください。 –

+0

http:// localhost:8000/PortalLoadSimServices10/MsmqService/mexにサービス参照を追加しようとしました –

+0

urlaclエントリを削除し、mexを含むメタデータに完全なアドレスを追加しようとしました。 )。 – stephenl

関連する問題