在某些 PC 上创建 WCF ServiceHost 对象需要三到四分钟
我创建了一个 WCF 服务,它不使用 app.config 来配置自身。但是,在某些 PC 上,构建 ServiceHost 对象需要三到四分钟。我认为我的服务有问题,因此构建了一个简单的 Hello, World 服务并尝试了它。我有同样的问题。
根据探查器,所有这些时间都花在读取服务的配置上。
所以我真的有两个问题。
-
是否可以禁用从 XML 读取配置?
-
更重要的是,有人知道为什么这可能会花费如此多的时间吗?
更
这是示例服务:
[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;
}
}
出于设计原因,我需要创建服务并将其作为对象传递,而不是作为类型传递。
如果有更多有用的信息,请告诉我。
非常感谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
服务器是否已连接到互联网?
如果没有,请尝试以下操作:
和“检查下载程序的签名”
在某些情况下,这样做会加快 PC 上许多看似不相关的进程的速度,包括不同 MS 程序(尤其是 Visual Studio)的通信和启动速度。
Is the server connected to the internet?
If not, try the following:
and 'Check for Signatures on downloaded programs'
In some cases doing this speeds up lots of seemingly unrelated processes on your PC, including communication and startup speed of different ms programs (especially Visual Studio).
否 - 但如果您是自托管,您始终可以删除 app.config 文件,或者在 app.config/web.config 中没有
部分。不,我不知道 - 但我看到您正在使用默认的 wsHttpBinding。
问题是:所有绑定的行为都相同吗? wsHttpBinding 是一个相当重量级的绑定,支持许多功能。
您是否发现使用
basicHttpBinding
或netTcpBinding
时花费的时间相同?马克
No - but you can always either just delete the app.config file if you're self-hosting, or just not have the
<system.serviceModel>
section in your app.config/web.config.No, I don't - but I see you're using the default wsHttpBinding.
Question is: does this behave the same with all bindings? wsHttpBinding is a pretty heavy-weight binding with support for lots of features.
Do you see the same amount of time spent when using e.g. the
basicHttpBinding
or thenetTcpBinding
??Marc
如果某件事在没有任何明显原因的情况下花费了很长时间,则通常是存在某种锁定并且正在等待超时。
我猜这与端口 8731 有关。
If something takes a long time without any apparent reason, it is often that there is some locking and it is waiting for a timeout.
I am guessing that it is something to do with port 8731.