2013-07-11 2 views
0

Я вхожу в веб-службы .Net и, к сожалению, новичок в нем. Я решил создать службу WCF вместо службы asp.net из-за онлайн-рекомендаций. Моя конечная цель - изучить iOS и другое мобильное программирование. Я знаком с стандартными и веб-приложениями vb.net и C#.Невозможно разрешить WCF «Ошибка публикации метаданных для этой службы отключена» ошибка

Я получаю сообщение об ошибке «Публикация метаданных для этой службы в настоящее время отключена» при попытке протестировать URL-адрес. Я занимаюсь исследованиями и пытался внедрить «исправления» для этой проблемы, но все еще не знаю. Может ли кто-нибудь посмотреть мой код и посмотреть, что я делаю неправильно?

WebConfig файл

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <compilation debug="true" strict="false" 
       explicit="true" targetFramework="4.0" /> 
    <customErrors mode="Off"/> 
    </system.web> 
    <connectionStrings> 
    </connectionStrings> 
    <system.serviceModel> 
<services> 
<services> 
<service name="CCT_Main_SRV.Service1" behaviorConfiguration="BehConfig"> 
<endpoint address="" binding="webHttpBinding" contract="CCT_Main_SRV.Service1" behaviorConfiguration="web"> 
</endpoint> 
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> 
</service> 
</services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="BehConfig"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="web"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"> 
    </serviceHostingEnvironment> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <directoryBrowse enabled="true"/> 
    </system.webServer> 
</configuration> 

.vb Файл

Imports System.ServiceModel 
Imports System 

Namespace CCT_Main_SRV.Service1 

<ServiceContract()> 
Public Interface CCT_Main_SRV 

    <OperationContract()> 
    <WebGet(UriTemplate:="Get_Device_Authenication", _ 
      RequestFormat:=WebMessageFormat.Json, _ 
      ResponseFormat:=WebMessageFormat.Json, _ 
      BodyStyle:=WebMessageBodyStyle.Wrapped)> 
    Function Authenicate_Device_Manager(ByVal Device_Name As String, _ 
             ByVal Auth_Key As String) _ 
      As List(Of Device_Authenication) 

    <WebGet()> 
    <OperationContract()> 
    Function Authenicate_Device_Manager_Non_JSON(ByVal Device_Name As String, _ 
               ByVal Auth_Key As String) _ 
      As List(Of Device_Authenication) 
End Interface 

<DataContract()> 
Public Class Device_Authenication 

    <DataMember()> 
    Public Property Device_Name As String 
    <DataMember()> 
    Public Property Active As Boolean 
    <DataMember()> 
    Public Property Return_String As String 
End Class 

svc.vb файл

Imports System.ServiceModel 
Imports System.Web.Script.Serialization 
Imports System.ServiceModel.Activation 
Imports System.ServiceModel.Web 
Imports System.ServiceModel.Description 


Namespace CCT_Main_SRV.Service1 
    Public Class Service1 
     Implements CCT_Main_SRV 


    Dim host As WebServiceHost = New WebServiceHost(GetType(Service1), New Uri("http://pmh-vmutility-1/cct_web_srv_test/:8000/")) 
    Dim ep As ServiceEndpoint = host.AddServiceEndpoint(GetType(CCT_Main_SRV), New WebHttpBinding(), "") 


     Public Function Authenicate_Device_Manager(ByVal Device_Name As String, _ 
               ByVal Auth_Key As String) _ 
      As List(Of Device_Authenication) _ 
      Implements CCT_Main_SRV.Authenicate_Device_Manager 

     End Function 
    End Class 
End Namespace 
+0

Мне кажется, что вы пытаетесь смешивать и сопоставлять SOAP и REST. WebHttpBinding для RESTful WCF. Что вы делаете, когда получаете ошибку? Попытка добавить ссылку на службу или использовать SVCUTIL? См. Это http://stackoverflow.com/a/17466832/745969 для ситуации, аналогичной вашей. – Tim

+0

@Tim. Я не знаком с SOAP и REST. В основном я пытаюсь создать WCF, поэтому это может быть мое соединение между SQL DB и приложениями iOS. Я буду исследовать обе эти процедуры. Спасибо –

ответ

0
service name="CCT_Main_SRV.Service1" 

Должно быть:

service name="Service1" 

Или, если он находится в веб-приложении:

service name="ProjectName.Web.Service1" 

Он должен соответствовать полное имя вашей службы

{namespace}.{class} ваш не имеет пространства имен ,

+0

Спасибо вам за помощь. Я добавил пространство имен в свой код и больше не вижу ошибку «Публикация метаданных». Я также добавил Webhost, чтобы фактически протестировать сервис, используя Internet Explorer. Я получаю еще одно сообщение об ошибке «Тип Crash_Cart_Web_SRV_Test.Service1», предоставленный в качестве значения атрибута Service в директиве ServiceHost или предоставленный в элементе конфигурации system.serviceModel/serviceHostingEnvironment/serviceActivations не удалось найти «Спасибо снова –

+0

Позволяет закройте этот вопрос и откройте новый, так что у сообщества есть новый вопрос/ответ на поиск, поскольку это другая ошибка. – OneFineDay

+0

[Doc] (http://msdn.microsoft.com/en-us/library/ee816902.aspx) – OneFineDay

Смежные вопросы