C# WCF&x2B;通配符映射+;每种方法的IIS6=404s!
当启用通配符映射时,我在IIS6上执行WCF方法时收到404 您可以通过在VS2008中创建新的WCF服务(新项目>WCF服务应用程序)来重现这一点。浏览到伪方法('GetData')。。。你会注意到它返回400。。。这很好,因为它显示它仍在转发到WCF 但是:如果在IIS6中启用通配符映射,您现在将获得404,这意味着WCF不再拦截请求 我的代码如下:C# WCF&x2B;通配符映射+;每种方法的IIS6=404s!,c#,asp.net,wcf,iis-6,wildcard-mapping,C#,Asp.net,Wcf,Iis 6,Wildcard Mapping,当启用通配符映射时,我在IIS6上执行WCF方法时收到404 您可以通过在VS2008中创建新的WCF服务(新项目>WCF服务应用程序)来重现这一点。浏览到伪方法('GetData')。。。你会注意到它返回400。。。这很好,因为它显示它仍在转发到WCF 但是:如果在IIS6中启用通配符映射,您现在将获得404,这意味着WCF不再拦截请求 我的代码如下: [ServiceContract] public interface IRest { [OperationContract]
[ServiceContract]
public interface IRest {
[OperationContract]
[WebGet(UriTemplate = "/test")]
int Test();
}
使用以下web.config:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="ServiceX.RestBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceX.RestBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" />
<services>
<service behaviorConfiguration="ServiceX.RestBehavior"
name="ServiceX.Rest">
<endpoint address="" behaviorConfiguration="ServiceX.RestBehavior"
binding="webHttpBinding" contract="ServiceX.IRest" />
</service>
</services>
</system.serviceModel>
没有通配符映射,所有工作正常;我可以浏览到“/services/rest.svc/test”,我将收到预期的结果
但是,一旦启用通配符映射(.*>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet\u isapi.dll),当我尝试访问一个方法时(尽管我仍然可以查看“/services/rest.svc”)
我已经用尽了Google和StackOverflow:(我只是在IIS6上运行WCF服务时遇到了同样的问题 我可以在上浏览该服务,但当在该服务上点击一个方法(如)时,我会得到一个404
对我来说,修复很简单。IIS中的.svc文件类型配置为由C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet\u isapi.dll处理,但我的服务是在ASP.NET v4.0应用池中运行的,因此我简单地指出了由C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet\u isapi.dll处理的.svc文件类型,以解释您为实现此目的所采取的步骤将非常有用,谢谢。打开IIS,选择您的网站,然后选择“处理程序映射”。