1

我有一个现有的 Web 应用程序,它安装在多台机器上。脚本客户端和 .net 客户端通过一台机器使用“.asmx”服务,将所有调用路由到其他机器。

客户端----> |网站\虚拟目录(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. 将“buildProviders”添加到删除 .svc 的编译部分
  2. 单击 MimeTypes 并输入“.svc”和“application/octet-stream”并保存
  3. 添加处理程序:

没有任何帮助,没有调用 http 处理程序

ps 我正在使用 AppPool .net 4.0 Integrated

4

2 回答 2

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 回答
1

我已经找到了。添加:

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

导致了一个错误,让我第一次退缩:“~/ServiceManagement.svc”要求“.svc”的 buildProvider 将打开

安装 MS AppFabric 时,会在计算机根配置中自动创建“~/ServiceManagement.svc”。由于我将该文件夹仅用于重定向,因此我不需要 Appfabric,因此我将其删除:

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