2013-02-13 134 views
0

我有一個帶有net.tcp和http服務器綁定的WCF服務。無法在服務器IE瀏覽器中查看服務

Web.config文件看起來像這樣

<system.web> 
    <compilation debug="false" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
     <binding name="tcp_Unsecured" portSharingEnabled="true"> 
      <security mode="None" /> 
     </binding> 
     </netTcpBinding> 
    </bindings> 
    <services> 
     <service name="MarketFeedServiceLibrary.Service1"> 
     <endpoint address="net.tcp://localhost:808/MarketFeedService/Service.svc/mexTcp" 
      binding="mexTcpBinding" bindingConfiguration="" name="mexEndPoint" 
      contract="IMetadataExchange" /> 
     <endpoint address="net.tcp://localhost:808/MarketFeedService/Service.svc/tcpService" 
      binding="netTcpBinding" bindingConfiguration="tcp_Unsecured" 
      name="dataEndPoint" contract="MarketFeedServiceLibrary.IService1" /> 
     <endpoint address="http://localhost:80/MarketFeedService/Service.svc/basicHttp" 
      binding="basicHttpBinding" bindingConfiguration="" name="httpDataEndpoint" 
      contract="MarketFeedServiceLibrary.IService1" /> 
     <endpoint address="http://localhost:80/MarketFeedService/Service.svc/mex" 
      binding="mexHttpBinding" bindingConfiguration="" name="httpMexEndpoint" 
      contract="MarketFeedServiceLibrary.IService1" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
     /> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

我在本地PC託管服務在IIS中,如果我使用的地址 "http://localhost/MarketFeedService/Service.svc"在IE瀏覽器,我得到的信息的元數據如下

Browsing on Local-PC

但是,如果我在VPS服務器(Windows Server 2008 IIS 7.5)上的IIS中承載相同的WCF Web服務,並且地址相同,則出現以下錯誤:

Browsing on VPS

我也可以添加服務引用本地託管服務的,但如果我嘗試與路徑「的net.tcp://IPAddress/MarketFeedService/Service.svc」添加服務器的服務參考,我獲得以下錯誤

由於端點地址'net.tcp://IPAddress/MarketFeedService/Service.svc'上的服務對地址協議不可用,因此無法分派消息。

N.B.

  1. Net.Tcp端口共享服務,的net.tcp偵聽器適配器接通
  2. WCF HTTP和非HTTP激活安裝並啓用。
  3. 爲默認網站和應用程序啓用了http和net.tcp協議。

非常感謝您提前。

+0

事件日誌給你提供任何信息嗎? – Jocke 2013-02-13 11:58:08

+0

是指錯誤頁面上提到的事件日誌查看器或跟蹤日誌。跟蹤日誌文件夾是空的,沒有任何記錄! – Marshal 2013-02-13 12:34:59

回答

0

svc文件類型是否正確映射在IIS中? http://msdn.microsoft.com/en-us/library/vstudio/ms752252(v=vs.90).aspx

+0

是的,我經歷了鏈接,所有設置都按照 – Marshal 2013-02-13 12:38:49

+0

完成,所以你已經運行:aspnet_regiis.exe -i for .NET 4.0?它是上面發佈的完整web.config嗎?您在IIS中運行的應用程序是什麼託管管道模式?使用任何http模塊或擴展? http://stackoverflow.com/questions/1808680/web-application-problems-web-config-errors-http-500-19-with-iis7-5-and-asp-net – Jocke 2013-02-13 13:03:09

+0

我運行了aspnet_regiis.exe,但它已經[這個錯誤](http://serverfault.com/questions/107134/when-i-run-aspnet-regiis-exe-it-just-shows-me-the-command-line-options-and-does),但我經歷了默認網站的處理程序映射,它顯示* .svc映射到aspnet。 – Marshal 2013-02-13 13:28:40

0

只是另一種選擇(因爲在防火牆的工作,我無法查看張貼的快照)對於那些有問題,可能會或可能不完全匹配這一個 -

我有一個很大的問題,尤其是在本地可以正常工作的RESTful服務的情況下,但在服務器上崩潰並燒燬。我認爲這可能是因爲與根配置或註冊表衝突的配置,但事實並非如此。

您必須進入IIS並查看您的基本站點級設置,纔會有一個名爲「ISAPI篩選器」的功能選項。

爲了長話短說,稱爲UrlScan的特定ISAPI過濾器(版本可能非常,我認爲當前版本是3.1)是我們問題的根源。該過濾器所做的是在傳入請求上查找模式,以嘗試篩選出潛在的惡意請求。

隨着技術的變化和改進,對設置不熟悉的請求進入並被拒絕或重新路由。在我的情況下,它正在查看文件擴展名。從ASP擴展啓動的舊的SOAP技術被認可/祝福(。asmx),但我們從未設置過RESTful或WCF服務,所以它不能識別「.svc」擴展名。

初始設置通常非常緊密,以至於任何http請求都被拒絕或重新路由,並且任何人都在管理web服務器調整文件以允許根據需要提供功能。

您可以轉到文件位置,並使用該工具的設置將.ini文件放在同一目錄中。

在該文本文件中,查找名爲[AllowExtensions]和[DenyExtensions]的部分。確保將.svc添加到「允許」組中,並確保它沒有明確列在拒絕的列表中。

Microsoft - HowTo: Use URLScan

相關問題