1

複数のマシンにインストールされている既存の Web アプリケーションがあります。スクリプト クライアントと .net クライアントは、すべての呼び出しを他のマシンにルーティングする 1 つのマシンを介して ".asmx" サービスを利用します。

クライアント ----> |Web サイト \ 仮想ディレクトリ(HttpHandler)| ----> |他サーバー\実.asmx|

同じ機能を実行する新しい .svc サービスを追加し、そのハンドラーを追加しました (ディレクトリの構成):

<system.webServer>
<handlers>
  <add name="MY_ASMX" verb="*" path="*.asmx" type="MY.AO.HttpProxy, Astea.AO.HttpProxy" resourceType="Unspecified" preCondition="integratedMode" />
  <add name="MY_ASPX" verb="*" path="*.aspx" type="MY.AO.HttpProxy, Astea.AO.HttpProxy" resourceType="Unspecified" preCondition="integratedMode" />
  <add name="MY_WSDL" verb="*" path="*.wsdl" type="MY.AO.HttpProxy, Astea.AO.HttpProxy" resourceType="Unspecified" preCondition="integratedMode" />
  <add name="MY_SVC" verb="*" path="*.svc" type="MY.AO.HttpProxy, Astea.AO.HttpProxy" resourceType="Unspecified" preCondition="integratedMode" />

asmx リクエストは正常にルーティングされますが、エンド サーバー上の新しい .svc は呼び出されず、Httphandler もスキップされます。他のマシンで .svc を直接呼び出すと、動作します。

私が得るエラーは次のとおりです。

WebHost failed to process a request.
Sender Information: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/26458746
 Exception: System.Web.HttpException (0x80004005): The service '/Mysite/MyDirectory/settings.svc' does not exist. ---> System.ServiceModel.EndpointNotFoundException: The service '/Mysite/MyDirectory/settings.svc' does not exist.

私はすでに以下を試しました

  1. .svc を削除するコンパイル セクションに「buildProviders」を追加します。
  2. MimeTypes をクリックし、「.svc」と「application/octet-stream」を入力して保存します。
  3. ハンドラを追加します:

何も役に立たない、http ハンドラが呼び出されていない

ps私はAppPool .net 4.0 Integratedで作業しています

4

2 に答える 2

1

私はそれを見つけました。追加:

<compilation debug="true" >
  <buildProviders>
    <remove extension=".svc"/>
  </buildProviders>
</compilation>

エラーが発生したため、最初は元に戻せませんでした。「〜/ ServiceManagement.svc」は、「。svc」のbuildProviderがオンになることを要求しました。

「〜/ ServiceManagement.svc」は、MS AppFabricをインストールすると、マシンのルート構成に自動的に作成されます。そのフォルダはリダイレクトにのみ使用しているので、そこにAppfabricは必要ないので、削除しました。

<system.serviceModel>
<serviceHostingEnvironment>
  <serviceActivations>
    <remove relativeAddress="~/ServiceManagement.svc"/>
  </serviceActivations>
</serviceHostingEnvironment>
于 2012-04-18T05:53:01.437 に答える
1

.svc 拡張機能は、既定で WCF サービスと見なされ、それらのハンドラー/モジュールが既に存在します。<add>要素の前に要素を配置することで、既存のハンドラー/モジュールを削除できます。

<remove name="svc-ISAPI-4.0_32bit" />

(または、win64 の場合:)

<remove name="svc-ISAPI-4.0_64bit" />

そして、<modules>要素で:

<remove name="ServiceModel-4.0" />
于 2012-04-17T11:51:58.587 に答える