我的 app.config 中有这个配置:
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="myBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
我想从我的桌面应用程序中以编程方式公开此服务:
我定义了主机实例:
ServiceHost host = new ServiceHost(typeof(MyType), new Uri("http://" + hostName + ":" + port + "/MyName"));
然后我添加端点及其绑定:
var binding = new BasicHttpBinding("myBinding");
host.AddServiceEndpoint(typeof(IMyInterface), binding, "MyName");
现在,我想用一些从配置文件中读取名为myBehavior的行为的代码替换以下代码,而不是对行为选项进行硬编码。
ServiceMetadataBehavior smb = new ServiceMetadataBehavior() { HttpGetEnabled = true };
host.Description.Behaviors.Add(smb);
// Enable exeption details
ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>();
sdb.IncludeExceptionDetailInFaults = true;
然后,我可以打开主机。
host.Open();
* 编辑 *
使用配置文件配置服务
您不需要这种方式,您应该让主机自动从配置文件中获取其配置,而不是手动提供它们,阅读这篇文章(使用配置文件配置服务),它会帮助你,我已经将我的服务托管在C# 中的一行,配置中的几行。
这是关于(在代码中配置 WCF 服务)的第二篇文章,我的错是我试图混合两种方式!
我将添加此作为答案。