Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF ServiceLayer类重定向到元数据。为什么?_C#_Wcf_Metadata - Fatal编程技术网

C# WCF ServiceLayer类重定向到元数据。为什么?

C# WCF ServiceLayer类重定向到元数据。为什么?,c#,wcf,metadata,C#,Wcf,Metadata,我有三个C#项目的解决方案: CareLife.DataLayer(类库) CareLife.ServiceLayer(WCF服务应用程序) CareLife.BusinessLayer(服务库) 我在CareLife.ServiceLayer中添加了项目CareLife.BusinessLayer的.dll(位于obj文件夹),因为需要访问项目ServiceLayer中BusinessLayer的方法 namespace CareLife.BusinessLayer.Operations

我有三个C#项目的解决方案:

  • CareLife.DataLayer(类库)
  • CareLife.ServiceLayer(WCF服务应用程序)
  • CareLife.BusinessLayer(服务库)
我在CareLife.ServiceLayer中添加了项目CareLife.BusinessLayer的.dll(位于obj文件夹),因为需要访问项目ServiceLayer中BusinessLayer的方法

namespace CareLife.BusinessLayer.Operations
{
    public class SpecialityServices
    {
        void GetArea() { }
    }
}
还有

namespace CareLife.ServiceLayer
{
    [ServiceContract]
    public class SpecialityOperations
    {
        [OperationContract]
        [WebInvoke(UriTemplate="Area", Method="GET")]
        ICollection<Area> GetArea()
        {
            try
            {
                SpecialityServices specialityServices = new SpecialityServices();
            }
            catch (Exception)
            {            
                throw;
            }
            return null;
        }
    }
}
namespace CareLife.ServiceLayer
{
[服务合同]
公共类特殊操作
{
[经营合同]
[WebInvoke(UriTemplate=“Area”,Method=“GET”)]
ICollection GetArea()
{
尝试
{
SpecialityServices SpecialityServices=新的SpecialityServices();
}
捕获(例外)
{            
投掷;
}
返回null;
}
}
}

问题是:为什么当我转到类SpecialityServices的ServiceLayer中的定义时,我总是重定向到metadata类?

我在这里看到的资源是定义的区域。您正在进行http://
/区域的访问吗


另外,如果您正在构建rest服务,为什么不使用WebAPI?

您是否尝试将其添加为项目引用而不是obj文件夹中的dll?

您应该明确声明webHttp端点。下面是示例
system.serviceModel
config部分:

  <system.serviceModel>
        <services>
           <service name="WcfService1.Service1">
            <endpoint address="basic" binding="basicHttpBinding" contract="WcfService1.IService1" />
            <endpoint address="" binding="webHttpBinding" contract="WcfService1.IService1" behaviorConfiguration="web"/>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
           </service>
        </services>
        <behaviors>
           <serviceBehaviors>
            <behavior>
             <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
             <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
           </serviceBehaviors>
           <endpointBehaviors>
            <behavior name="web">
             <webHttp/>
            </behavior>
           </endpointBehaviors>
        </behaviors>
        <protocolMapping>
           <add binding="basicHttpsBinding" scheme="https" />
        </protocolMapping>    
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

为了澄清,我将
端点行为
部分和
webHttp端点
添加到服务部分