我在啓用通配符映射時在IIS6上執行WCF方法時收到404s。每種方法的WCF +通配符映射+ IIS6 = 404s!
你可以通過在VS2008中創建一個新的WCF服務(新建項目> WCF服務應用程序)來重現這一點。瀏覽到虛擬方法('GetData')...你會注意到它返回400 ...這很好,因爲它顯示它仍然轉發到WCF。
但是:如果您在IIS6中啓用通配符映射,您現在將獲得404,這意味着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),那麼當我嘗試訪問一個方法時,我就開始接收404s儘管我仍然可以查看'/services/rest.svc')。
我已經用盡谷歌和StackOverflow上:(
解釋您爲達到此目的所採取的步驟將非常有幫助,謝謝。 – robyaw 2012-04-18 07:10:02