在form_Load()中使用此示例... Hosting WCF service inside a Windows Forms application ...与4.5 VS2012中的Winform应用程序 它加载正常但无法在浏览器中访问...错误无法访问' localhost'
private ServiceHost Host;
private void frmAdmin_Load(object sender, EventArgs e)
{
Host = new ServiceHost(typeof(bklvmain_v4.BTestService));
if (Host == null)
Host.Open();
}
private void closeToolStripMenuItem_Click(object sender, EventArgs e)
{
if (Host != null)
Host.Close();
}
App config ...
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="bklvmain_v4.BTestServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="bklvmain_v4.BTestServiceBehavior"
name="bklvmain_v4.BTestService">
<endpoint address="" binding="wsHttpBinding" contract="bklvmain_v4.IBTestService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/BTestService/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
...接口
[ServiceContract]
public interface IBTestService
{
[OperationContract]
Tickers[] BTestLong(string dte);
[OperationContract]
Tickers[] BTestShort(string dte);
}
答案 0 :(得分:0)
你永远不会打开主持人:
private void frmAdmin_Load(object sender, EventArgs e)
{
Host = new ServiceHost(typeof(bklvmain_v4.BTestService));
// if (Host == null)
// Could be if (Host != null), but the check is not required here anyways
Host.Open();
}
由于您检查了if (Host==null)
,并且刚构建了Host
,检查将始终失败,您永远不会致电.Open()
。
答案 1 :(得分:0)
再次感谢@Reed - 似乎我可能已经在实际工作但很难说 - 因为我说没有网络可访问的服务方法....进一步的实验...... (2014年的新词)...... !! .ps ..我的2014决议是不要使用'但是''然而','我告诉你什么......','猜什么','你知道什么','看','所以......(开始声明) ,或者其他被忽视的愚蠢术语......就像'反正'......所以,这里又一次......进一步的实验......(!!)..在winform中测试wcf服务可能比我们想象的要容易,但它是很难找到正确的文档..我怎么知道MS说只是启动vs cmd提示并加载WCFTestClient.exe但是为什么有人甚至知道VS cmnd提示符存在的位置。根据这一点,位置在'开始 - &gt;中。 VS Tools下的“程序”栏,实际上,通过运行C:\ WcfTestClient.exe然后包含<'http://localhost/mexBTestService'>
上面'mex'配置的修改后的端点地址,实际上可以验证服务是否成功运行!! !祝大家新年快乐!和快乐的编码!!