C# 自托管WCF服务-混淆行为

C# 自托管WCF服务-混淆行为,c#,.net,wcf,.net-4.0,self-hosting,C#,.net,Wcf,.net 4.0,Self Hosting,我正在学习WCF,作为实践练习,我决定为ServiceHost类编写通用包装器。我们的想法是开设如下课程: public class Host<I(nterface), S(ervice)> where S : I, new() { /**/ ServiceHost mServiceHost; S mServiceInstance = new S(); } 我添加了一个服务端点: mServiceHost.AddServiceEndPoint(ty

我正在学习WCF,作为实践练习,我决定为ServiceHost类编写通用包装器。我们的想法是开设如下课程:

public class Host<I(nterface), S(ervice)>
    where S : I, new()
{
    /**/

    ServiceHost mServiceHost;
    S mServiceInstance = new S();
}
我添加了一个服务端点:

mServiceHost.AddServiceEndPoint(typeof(I), new BasicHttpBinding(), new Uri("http://localhost:40000/MyTestService"));
过了一会儿,我打开了主机,启动了我的应用程序,并尝试查看我的浏览器是否会显示“下的服务”http://localhost:40000/MyTestService“-我得到一个空白页,所有添加服务引用的尝试都失败

我后来将相同的Uri添加到ServiceHost的构造函数中:

mServiceHost = new ServiceHost(mServiceInstance, new Uri("http://localhost:40000/MyTestService"));
该构造函数的第二个参数是:

params string[] baseAddresses 

在任何情况下,“params”关键字的存在告诉我这个参数是可选的

我重新访问了我的应用程序,并(使用浏览器)导航到uri。服务页面弹出。总的来说,这是工作,但不是我预期的方式,我似乎错过了一些东西

问题:

  • 当我在ServiceHost构造函数中没有提供可选的baseAddresses参数时,为什么服务会失败?在添加服务端点时,我试图提供地址

  • 我能实现“我最初希望的方式”吗


  • 致以最诚挚的问候,希望不久能收到WCF专家的来信。

    Greg Sansom回答了您的第一个问题。
    至于第二个问题:请看一下Juval Lowy的ServiceModelEx类(特别是ServiceHost),它包含了几个对WCF有用的类,Greg Sansom回答了您的第一个问题。
    至于第二个问题:请看一看Juval Lowy的ServiceModelEx类(特别是ServiceHost),它包含几个WCF有用的类

    希望他没有删除他的答案,我在一些后续阅读后正要“接受”它:/Wish他没有删除他的答案,在一些后续阅读之后我正要“接受”它:/
    params string[] baseAddresses 
    
    params Uri[] baseAddresses