我有一个现有的Web应用程序,它安装在多台机器上。脚本客户端和.net客户端通过一台机器使用“.asmx”服务,将所有呼叫路由到其他机器。
客户端----> |网站\虚拟目录(HttpHandler)| ----> |其他服务器\ real .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.
我已经尝试了下面的
没有任何帮助,http处理程序没有被调用
P.S。我正在使用AppPool .net 4.0集成
答案 0 :(得分: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" />
答案 1 :(得分: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>