0

net.tcp および http サーバー バインディングを備えた WCF サービスがあります。

Web.config ファイルは次のようになります

 <system.web>
    <compilation debug="false" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="tcp_Unsecured" portSharingEnabled="true">
          <security mode="None" />
        </binding>
      </netTcpBinding>
    </bindings>
    <services>
      <service name="MarketFeedServiceLibrary.Service1">
        <endpoint address="net.tcp://localhost:808/MarketFeedService/Service.svc/mexTcp"
          binding="mexTcpBinding" bindingConfiguration="" name="mexEndPoint"
          contract="IMetadataExchange" />
        <endpoint address="net.tcp://localhost:808/MarketFeedService/Service.svc/tcpService"
          binding="netTcpBinding" bindingConfiguration="tcp_Unsecured"
          name="dataEndPoint" contract="MarketFeedServiceLibrary.IService1" />
        <endpoint address="http://localhost:80/MarketFeedService/Service.svc/basicHttp"
          binding="basicHttpBinding" bindingConfiguration="" name="httpDataEndpoint"
          contract="MarketFeedServiceLibrary.IService1" />
        <endpoint address="http://localhost:80/MarketFeedService/Service.svc/mex"
          binding="mexHttpBinding" bindingConfiguration="" name="httpMexEndpoint"
          contract="MarketFeedServiceLibrary.IService1" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="false" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
       />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

ローカル PC の IIS でサービスをホストしています。アドレスを使用して IE で参照すると "http://localhost/MarketFeedService/Service.svc"、以下のようなメタデータ情報が得られます

ローカル PC での閲覧

しかし、VPS サーバー (Windows Server 2008 IIS 7.5) 上の IIS で同じ WCF Web サービスを同じアドレスでホストすると、次のエラーが発生します。

VPSでの閲覧

また、ローカル ホスト サービスのサービス参照を追加することもできますが、サーバーのサービス参照をパス「net.tcp://IPAddress/MarketFeedService/Service.svc」で追加しようとすると、次のエラーが発生します。

エンドポイント アドレス 'net.tcp://IPAddress/MarketFeedService/Service.svc' のサービスがアドレスのプロトコルで利用できないため、メッセージをディスパッチできませんでした。

注意

  1. Net.Tcp ポート共有サービス、Net.Tcp リスナー アダプターがオンになっている
  2. WCF Http および Non-Http Activation がインストールされ、有効になっている。
  3. http および net.tcp プロトコルは、既定の Web サイトとアプリケーションで有効になっています。

事前にどうもありがとうございました。

4

2 に答える 2

0

svc ファイルの種類は IIS で正しくマップされていますか? http://msdn.microsoft.com/en-us/library/vstudio/ms752252(v=vs.90).aspx

于 2013-02-13T11:44:27.593 に答える
0

これと完全に一致する場合と一致しない場合がある問題を抱えている人のためのもう1つのオプション(ファイアウォールのために職場で投稿されたスナップショットを表示できません)-

私は多くの問題を抱えていました。特に、ローカルでは問題なく動作していた RESTful サービスがサーバー上でクラッシュして焼き付きました。ルート構成またはレジストリとの構成の競合が原因である可能性があると思いましたが、実際にはそうではありませんでした。

IIS にアクセスして、ベース サイト レベルのセットアップを確認する必要があります。「ISAPI フィルター」と呼ばれる機能オプションがあります。

簡単に言うと、UrlScan と呼ばれる特定の ISAPI フィルター (バージョンは非常に高いかもしれませんが、現在のものは 3.1 だと思います) が問題の原因でした。このフィルターが行うことは、着信要求のパターンを探して、潜在的に悪意のある要求を排除しようとすることです。

テクノロジーの変化と改善に伴い、セットアップになじみのないリクエストが入ってきて、拒否または再ルーティングされます。私の場合、ファイル拡張子を調べていました。ASP 拡張機能から起動された古い SOAP テクノロジは認識/祝福 (.asmx) されましたが、RESTful または WCF サービスをセットアップしたことがなかったため、".svc" 拡張機能は認識されませんでした。

通常、初期設定は非常に厳密であるため、http 要求は拒否または再ルーティングされ、Web サーバーを管理している人は誰でも、必要に応じて機能できるようにファイルを微調整します。

ファイルの場所に移動すると、同じディレクトリに、そのツールの設定を含む .ini ファイルがあります。

そのテキスト ファイルで、[AllowExtensions] および [DenyExtensions] というセクションを探します。必ず .svc を「許可」グループに追加し、拒否グループに明示的にリストされていないことを確認してください。

Microsoft - ハウツー: URLScan を使用する

于 2017-12-21T19:18:14.810 に答える