0

私は .Net Web サービスに手を出していますが、残念ながら初心者です。オンラインの推奨事項により、asp.net サービスの代わりに WCF サービスを構築することにしました。私の最終的な目標は、iOS やその他のモバイル プログラミングを学ぶことです。私は vb.net と c# の標準および Web アプリケーションに精通しています。

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
4

1 に答える 1

0
service name="CCT_Main_SRV.Service1"

次のようにする必要があります。

service name="Service1"

または、Web アプリケーションに存在する場合:

service name="ProjectName.Web.Service1"

サービスの完全修飾名と一致する必要があります

{namespace}.{class}あなたのものには名前空間がありません。

于 2013-07-11T05:05:41.527 に答える