2009-10-16 22 views
3

我創建了一個不使用app.config來配置自身的WCF服務。但是,在某些PC上花費三到四分鐘來構建ServiceHost對象。考慮到我的服務有問題,我構建了一個簡單的Hello,World服務,並嘗試使用它。我有同樣的問題。在某些電腦上創建WCF ServiceHost對象需要三到四分鐘

根據分析器,所有這段時間都花費在配置服務中。

所以我真的有兩個問題。

  1. 是否可以禁用從XML讀配置?

  2. 更重要的是,有沒有人有任何想法,爲什麼這可能需要這麼多的時間?

下面是示例服務:

[ServiceContract] 
public interface IMyService 
{ 
    [OperationContract] 
    string GetString(); 
} 

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)] 
public class MyService : IMyService 
{ 
    public string GetString() 
    { 
     return "Hello, world!"; 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     Uri epAddress = new Uri("http://localhost:8731/Test"); 
     Uri[] uris = new Uri[] { epAddress }; 

     MyService srv = new MyService(); 
     ServiceHost host = new ServiceHost(srv, uris); // this line takes 3-4 minutes 

     host.AddServiceEndpoint(typeof(IMyService), new WSHttpBinding(), "Test"); 
     ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); 
     smb.HttpGetEnabled = true; 
     host.Description.Behaviors.Add(smb); 

     host.Open(); 

     return; 
    } 
} 

我需要設計原因創建服務並在將它作爲一個對象,而不是在將它作爲一種類型。

如果有更多的信息可以使用,請讓我知道。

非常感謝。

+0

嗨Vitaliy,Marc和Shiraz謝謝大家的迴應。我嘗試了Vitaliy的建議,之後重新啓動了我的電腦。這似乎解決了這個問題。不幸的是,我似乎無法登錄爲我用來創建帖子的帳戶,但這似乎已經爲我修復了它。再次感謝您的所有建議。 Steve – 2009-10-16 14:42:40

+0

我合併了你的賬戶。我認爲你現在應該可以選擇最好的答案。 – Will 2011-04-14 18:14:36

回答

1

服務器是否連接到互聯網?

如果沒有,請嘗試以下操作:

  1. 打開Internet Explorer
  2. 工具 - > Internet選項 - >高級選項卡
  3. 向下滾動到安全性和禁用 '檢查發行商的證書吊銷' 和'檢查已下載程序的簽名'

在某些情況下,這樣做會加速PC上很多看似不相關的進程,包括g通信和不同ms程序(尤其是Visual Studio)的啓動速度。

0
  1. 是否有可能禁止從XML讀取配置?

沒有 - 但你總是可以要麼只是刪除app.config文件,如果你是自託管,或者只是沒有在你的app.config/web.config中<system.serviceModel>部分。

  • 更重要的是,沒有任何人有任何想法,爲什麼這可能採取這樣的時間了過多?
  • 不,我不知道 - 但我看你使用的是默認的wsHttpBinding。

    問題是:這是否與所有綁定一樣? wsHttpBinding是一個相當重的綁定,支持很多功能。

    您是否看到使用過程中花費的時間相同basicHttpBindingnetTcpBinding ??

    馬克

    0

    如果有什麼需要很長的時間沒有任何明顯的原因,往往有一些鎖定,並正在等待超時。

    我猜這是什麼做端口8731.

    • 你有別的監聽端口上?
    • 你有防火牆可能會給你帶來問題嗎?
    相關問題