Ich habe einen WCF-Dienst erstellt, der die app.config nicht zur Selbstkonfiguration verwendet. Auf manchen PCs dauert es jedoch drei bis vier Minuten, um das ServiceHost-Objekt zu erstellen. In der Annahme, dass mit meinem Dienst etwas nicht stimmt, habe ich einen einfachen "Hello, World"-Dienst erstellt und ihn damit ausprobiert. Ich habe das gleiche Problem.
Dem Profiler zufolge wird die gesamte Zeit damit verbracht, die Konfiguration des Dienstes einzulesen.
Ich habe also eigentlich zwei Fragen.
-
Ist es möglich, das Lesen der Konfiguration aus der XML-Datei zu deaktivieren?
-
Was noch wichtiger ist: Hat jemand eine Ahnung, warum dies so viel Zeit in Anspruch nehmen könnte?
Hier ein Beispiel für einen Dienst:
[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;
}
}
Ich muss aus Designgründen den Dienst erstellen und ihn als Objekt übergeben, anstatt ihn als Typ zu übergeben.
Wenn Sie weitere nützliche Informationen haben, lassen Sie es mich bitte wissen.
Vielen Dank!