2008-12-15 476 views
7

我有一個WCF服務託管在Windows服務上,並使用BasicHttp端點爲連接到它的Windows Mobile設備提供服務。WCF請求失敗,HTTP狀態405:方法不允許

問題是用Device Emulator。我可以連接到該服務並且無任何問題地使用它,但是使用實際的設備。我收到錯誤:

WCF The request failed with HTTP status 405: Method Not Allowed.

我已經使用以下代碼來實現該服務。

BasicHttpBinding basicHttpBinding = new BasicHttpBinding(); 
basicHttpBinding.UseDefaultWebProxy = false; 

m_ServiceHost.AddServiceEndpoint(typeof(IKooft), basicHttpBinding, "KooftService"); 
m_ServiceHost.Open(); 

我該如何解決這個問題?

回答

4

檢查你的IIS擴展,特別是對於那些有的.wsdl有效:

在IIS:

  • 看看你的站點的屬性。
  • 在主目錄選項卡中,單擊 配置。
  • 點擊添加(我的路徑是 「C:\ Program Files文件(x86)的\共同 文件\ MSSOAP \ BINARIES \ SOAPIS30.DLL」)
  • 將擴展的.wsdl並允許 「獲取」 和「郵報」
  • 選擇‘腳本 引擎’和‘確認文件是否存在’

這應該是它。

+1

正如我所提到的,它託管在Windows服務應用程序而不是IIS上。 – mrtaikandi 2009-04-04 11:37:51

0

使用WCF時,您可能還需要將.svc文件類型映射到IIS中的aspnet_isapi.dll。

1

如果您使用的是WCF REST服務,你應該定義你的合同方法是這樣的:

[OperationContract] 
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)] 
string CheckService(); 

特別注意WebInvoke屬性和Method="POST"

相關問題