Vista下調式WCF的http服務的安全問題

來源:互聯網
上載者:User
Vista下調式WCF的http服務的安全問題2009-01-17 22:41

Vista下調式WCF的http服務的安全問題

今天在Vista下開發了一個WCF的Tcp程式,跑的很正常,
突然想公開一下Http介面,按WCF的文檔說明,應該沒有問題的,但是非常令人氣氛的說
服務進程沒有許可權開啟連接埠,具體錯誤資訊類似:
System.ServiceModel.AddressAccessDeniedException:HTTP 無法註冊 URL http://+:8000/ServiceModelSamples/service/。進程不具有此命名空間的存取權限(有關詳細資料,請參見 http://go.microsoft.com/fwlink/?LinkId=70353)。---> System.Net.HttpListenerException:訪問被拒絕

msdn上提了三個步驟來解決這個問題:
1.如果電腦不是域成員,請將身分識別驗證模式和保護層級設定為 None 以禁用傳輸安全性,如下面的樣本配置所示:
確保通過設定終結點的 bindingConfiguration 屬性將終結點與綁定關聯。

確保在運行樣本前更改 PoisonMessageServer、伺服器和用戶端上的配置。

2.注意:
將 security mode 設定為 None 等效於將 MsmqAuthenticationMode、MsmqProtectionLevel 和 Message 安全設定為 None。

3.若要使中繼資料交換正常工作,應當向 http 綁定註冊一個 URL。這要求服務在具有提升許可權的命令視窗中運行。否則,您將接收到異常

最後我以管理員權限來開啟這個程式才能註冊URL,看來Vista的安全性確實比較高,不知道該怎麼寫這個程式才能在vista下順利運行

另外,我測試了一下tcp協議和basicHttp協議的效能差異:
兩者居然差別不是特別大:
服務和用戶端程式都在一個伺服器上(vista)
以tcp方式調用500次,大概使用600毫秒
以http方式調用500次,大概使用800毫秒

整體來說http比tcp慢30%不到,還是能夠接受
當然這是在本機,如果是在公網上跑,就沒有這麼樂觀了。居然沒筆調用才1毫秒多一點。神速啊!

附我完整測試的服務配置,供大家參考:
<system.serviceModel>
    <services>
      <service name="ServerPart.Server" behaviorConfiguration="sb">
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://127.0.0.1:5353" />
            <add baseAddress="http://127.0.0.1:5356/" />
          </baseAddresses>
        </host>
        <endpoint address="net" binding="netTcpBinding" bindingConfiguration="bd" contract="ServerPart.IServer" />
        <endpoint address="httpend" binding="basicHttpBinding" contract="ServerPart.IServer" bindingConfiguration="httpbd" />
        <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <bindings>
      <netTcpBinding>
        <binding name="bd">
        </binding>
      </netTcpBinding>
      <basicHttpBinding>
        <binding name="httpbd">
          <security mode="None" />
        </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="sb">
          <serviceMetadata />
          <!--<serviceMetadata httpGetEnabled="true" />-->
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
</system.serviceModel>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.