簡體   English   中英

在IIS6中啟用通配符映射時,WCF方法返回404

[英]WCF Methods Return 404 When Wildcard Mapping Is Enabled In IIS6

我有一個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不再攔截該請求。

我在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 apppool中運行,所以我只是指出要由C:\\ Windows \\ Microsoft.NET \\ Framework \\ v4.0.30319 \\ aspnet_isapi.dll處理的.svc文件類型

在您指定通配符映射路徑的彈出對話框中,有一個復選框名為“驗證該文件存在”的設置。 此設置需要關閉。

如果未關閉,則會顯示404(找不到頁面)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM