【问题标题】:WCF Methods Return 404 When Wildcard Mapping Is Enabled In IIS6在 IIS6 中启用通配符映射时,WCF 方法返回 404
【发布时间】:2010-11-05 18:10:18
【问题描述】:

我有一个 REST WCF 服务定义如下:

[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_isapi.dll),当我尝试访问方法时就会开始收到 404(尽管我仍然可以查看“/services/rest.svc”)。

有什么想法吗?我已经用尽了 Google 和 StackOverflow。似乎没有人分享这个问题:(

编辑:您都可以通过在 VS2008 中创建一个新的 WCF 服务来重现这一点(新项目 > WCF 服务应用程序)。浏览到虚拟方法('GetData')...您会注意到它返回 400...这很好,因为它表明它仍在转发到 WCF。 但是,如果您在 IIS6 中启用通配符映射,您现在将得到 404,这意味着 WCF 不再拦截请求。

【问题讨论】:

  • 我的共享主机提供商遇到了同样的问题。本地一切运行良好,但是一旦我上传,我只能访问服务信息页面(/services/servicename.svc)。你设法解决了吗?您能否提供有关在我的机器上本地复制此内容的更多详细信息?

标签: c# asp.net wcf wildcard-mapping


【解决方案1】:

我刚刚在 IIS6 上运行 WCF 服务时遇到了同样的问题。

我可以在http://someurl/service.svc 上浏览服务,但在点击服务上的方法(例如http://someurl/service.svc/somemethod)时会得到 404。

就我而言,修复很简单。 .svc 文件类型在 IIS 中配置为由 C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll 处理,但我的服务在 ASP.NET v4.0 应用程序池中运行,所以我只是指出要由 C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll 处理的 .svc 文件类型

【讨论】:

    【解决方案2】:

    在您指定通配符映射路径的弹出对话框中,有一个名为“验证该文件是否存在”的设置复选框。需要关闭此设置。

    如果没有关闭,你会得到一个404(找不到页面)

    【讨论】:

      猜你喜欢
      • 2011-05-21
      • 1970-01-01
      • 2011-04-18
      • 2010-11-13
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      相关资源
      最近更新 更多