创建WCF项目遇到的问题和解决办法续(二)

来源:互联网 发布:淘宝店铺认证复核几项 编辑:程序博客网 时间:2024/05/04 21:03

问题3 基地址baseAddress和终节点地址的区别

        我是这样想的,baseAddress就相当于火车站售票大厅的地址,而终节点地址就是售票大厅中某一个窗口的地址,契约就是退票、订票、签票这样的服务名目。服务就是具体的退票、订票和签票的操作服务。绑定就是通过什么方式把票给你。一个终结点配置就是告诉你,你到底是退、定还是签票,你要在哪里“退/定/签”票、通过什么方式把“票/退的钱"给你.
好吧,理解比较粗浅哈。。。

问题 4 报错: ServiceMetadataBehavior的 HttpsGetEnabled 属性设置为 Ture, * 而 HttpsGetUrl 属性是相对地址,但没有 https 基址。请提供 https 基址或将 HttpsGetUrl 设置为绝对地址。

由于前台总是找不出错误在哪,就尝试用编程方式配置,代码如下:

            //基地址
            Uri baseAddress = new Uri("http://localhost:8000/WcfService1/");
            ServiceHost host = new System.ServiceModel.ServiceHost(typeof(WcfService1.BookService), baseAddress);             
            //绑定方式
            BasicHttpBinding basicHttpBingding = new BasicHttpBinding();
            //终结点
            Uri address = new Uri("http://localhost:8000/BookService/");          
            host.AddServiceEndpoint(typeof(WcfService1.IBookService),basicHttpBingding,address);           
            //元数据
            ServiceMetadataBehavior metadataBehavior ;
            metadataBehavior = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
            if (metadataBehavior == null)
            {
                metadataBehavior = new ServiceMetadataBehavior();
                metadataBehavior.HttpsGetEnabled = true;
                host.Description.Behaviors.Add(metadataBehavior);
            }
            host.Open();

HttpsGetEnabled改成HttpGetEnabled,就好了 


问题5:报错:服务“WcfService1.BookService”有零个应用程序(非基础结构)终结点。这可能是因为未找到应用程序的配置文件,或者在配置文件中未找到与服务名称匹配的服务元素,或者服务元素中未定义终结点。

虽然编程方式可以运行了,但还是不甘心为什么使用配置文件程序就是运行不了,因此静下心来好好看了一下这个报错内容。

配置文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="WcfService1.BookService" behaviorConfiguration="WcfService1">
 <host>
 <baseAddresses>
 <add baseAddress="http://localhost:7377/WcfService1"/>
 </baseAddresses>
 </host>
 <endpoint address="http://localhost:7377/BookService" 
binding="basicHttpBinding" 
contract="WcfService1.IBookService"/> 
 </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WcfService1">       
          <serviceMetadata httpGetEnabled="true"/>        
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

基地址没错,终节点配置也没错,behaviors配置也没错,难道是因为这个配置文件程序读不到?因此尝试在这个宿主项目下添加了一个应用文件配置文件"App.Config",将这些内容复制进去,就运行通了!!气结了,找了这么长时间的错误原来这么低级!!

实话说快被这个配置文件折腾死了,想来还是代码配置方便很多。

奇怪为什么我学习每一门新的编程技术时都会遇到这么多稀奇古怪的问题,也只能安慰自己:通过出现问题解决问题也许会学的更快更扎实一些吧。



原创粉丝点击