Problem with Webservice Error Web Service Method is not valid

Locked Problem with Webservice Error Web Service Method is not valid

  • Wednesday, May 16, 2012 2:17 PM
     
      Has Code

    Hi!
    I ve got a Problem with a Webservice. I ve Scripted it in VB.net -- Please has anybody an Idea

    why this happens -- I can't find the Problem

    Imports System.Web.Services
    Imports System.Web.Services.Protocols
    Imports System.ComponentModel
    Imports System.Web.Configuration
    Imports System.Web.Management
    Imports System.Data.SqlClient.SqlDataReader
    Imports System.Data.SqlClient
    Imports System.Management
    <System.Web.Services.WebService(Namespace:="SPECIALMDT.Service1")> _
    <System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
    <ToolboxItem(False)> _
    Public Class Service1
        Inherits System.Web.Services.WebService
    #Region "Instance variables"
        Private _rootServer As String = ""
        Private _slpServer As String = ""
        Private _ConnectionString As String = ""
    #End Region
    #Region "Initialization"
        Public Sub New()
            ' Read the root server parameter
            Me._rootServer = WebConfigurationManager.AppSettings.Item("RootServer")
            Trace.WriteLine(("MyMDTWebService: Specified root server is " & Me._rootServer))
            Me._slpServer = WebConfigurationManager.AppSettings.Item("SLPServer")
            Trace.WriteLine(("MyMDTWebService: Specified SLP server is " & Me._slpServer))
            ' Get Connection String from web.config
            Me._ConnectionString = ConfigurationManager.ConnectionStrings("MDTDB").ConnectionString
            Trace.WriteLine(("MyMDTWebService: Connection String is " & Me._ConnectionString))
        End Sub
    #End Region
        Public Function RetrieveSCCMPKG() As List(Of Names)
            Using connection = New SqlConnection(_ConnectionString)
                connection.Open()
                Dim command = New SqlCommand("RetrieveSCCMPKG", connection)
                command.CommandType = CommandType.StoredProcedure
                Using dr = command.ExecuteReader()
                    Dim result = New List(Of Names)()
                    While dr.Read()
                        result.Add(New Names() With { _
                         .PkgId = DirectCast(dr("PkgId"), String), _
                         .Name = DirectCast(dr("Name"), String) _
                        })
                    End While
                    Return result
                End Using
            End Using
        End Function
    End Class
    Public Class Names
        Public Property PkgId() As String
            Get
                Return m_PkgId
            End Get
            Set(ByVal value As String)
                m_PkgId = value
            End Set
        End Property
        Private m_PkgId As String
        Public Property Name() As String
            Get
                Return m_Name
            End Get
            Set(ByVal value As String)
                m_Name = value
            End Set
        End Property
        Private m_Name As String
    #Region "Utilities"
    #End Region
    End Class

    My web.Config looks like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <section name="Koster.MDT.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
      </configSections>
      <appSettings>
        <add key="RootServer" value="MySCCMServer" />
        <add key="SLPServer" value="MySCCMServer" />
        <add key="RootSiteCode" value="AT1" />
        <add key="ADDomain" value="MyDomain" />
        <add key="ADUsername" value="" />
        <add key="ADPassword" value="" />
        <add key="MDTDBServer" value="MySCCMServer" />
        <add key="MDTDBName" value="mdt_at1" />
        <add key="MDTDBIntegratedSecurity" value="True" />
        <add key="MDTDBUser" value="YourMDTDBAdminAccount" />
        <add key="MDTDBPassword" value="YourMDTDBAdminAccountPw" />
        <add key="IncludeFunctions" value="*" />
        <add key="ExcludeFunctions" value="" />
        <add key="IncludeADFunctions" value="" />
        <add key="ExcludeADFunctions" value="DeleteComputer,DeleteComputerForced,SetComputerAttribute,DeleteUser,DeleteUserForced,SetUserAttribute" />
        <add key="IncludeSCCMFunctions" value="" />
        <add key="ExcludeSCCMFunctions" value="DeleteComputer,DeleteComputerByID" />
        <add key="IncludeMDTFunctions" value="" />
        <add key="ExcludeMDTFunctions" value="" />
        <add key="IncludeSMSCliCtrFunctions" value="" />
        <add key="ExcludeSMSCliCtrFunctions" value="" />
        <add key="IncludeSpecialMDT" value="RetrieveSCCMPKG" />
      </appSettings>
      <connectionStrings>
    	  <add name="MDTDB" connectionString="Data Source=MySCCMServer;Initial Catalog=mdt_at1;Integrated Security=SSPI;"/>
      </connectionStrings>
      <system.web>
        <!-- 
                Set compilation debug="true" to insert debugging 
                symbols into the compiled page. Because this 
                affects performance, set this value to true only 
                during development.
                Visual Basic options:
                Set strict="true" to disallow all data type conversions 
                where data loss can occur. 
                Set explicit="true" to force declaration of all variables.
            -->
        <compilation strict="false" explicit="true" />
        <pages>
          <namespaces>
            <clear />
            <add namespace="System" />
            <add namespace="System.Collections" />
            <add namespace="System.Collections.Specialized" />
            <add namespace="System.Configuration" />
            <add namespace="System.Text" />
            <add namespace="System.Text.RegularExpressions" />
            <add namespace="System.Web" />
            <add namespace="System.Web.Caching" />
            <add namespace="System.Web.SessionState" />
            <add namespace="System.Web.Security" />
            <add namespace="System.Web.Profile" />
            <add namespace="System.Web.UI" />
            <add namespace="System.Web.UI.WebControls" />
            <add namespace="System.Web.UI.WebControls.WebParts" />
            <add namespace="System.Web.UI.HtmlControls" />
    		<add namespace="System.Data.SqlClient.SqlDataReader" />
    		<add namespace="System.Data.SqlClient" />
    		<add namespace="System.Management" />
    		<add namespace="System.Data.SqlClient" />
    		<add namespace="System.Web.Services" />
    		<add namespace="System.ComponentModel" />
    		<add namespace="System.Web.Configuration" />
    		<add namespace="System.Web.Management" />
    		<add namespace="System.Web.Services.Protocols" />
    		</namespaces>
        </pages>
        <!--
                The <authentication> section enables configuration 
                of the security authentication mode used by 
                ASP.NET to identify an incoming user. 
            -->
        <authentication mode="Windows" />
        <!--
                The <customErrors> section enables configuration 
                of what to do if/when an unhandled error occurs 
                during the execution of a request. Specifically, 
                it enables developers to configure html error pages 
                to be displayed in place of a error stack trace. -->
        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
          <error statusCode="403" redirect="NoAccess.htm" />
          <error statusCode="404" redirect="FileNotFound.htm" />
        </customErrors>
        <webServices>
          <protocols>
            <add name="HttpPost" />
            <add name="HttpGet" />
            <add name="Documentation" />
          </protocols>
          <wsdlHelpGenerator href="MKWsdlHelpGenerator.aspx" />
        </webServices>
      </system.web>
      <system.diagnostics>
        <trace autoflush="true" indentsize="4">
          <listeners>
            <add name="TraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\Temp\MyMDTTrace.log"/>
          </listeners>
        </trace>
      </system.diagnostics>
    </configuration>

    Now when I Call this Webservice with my *.asmx File I get the following Error

    System.InvalidOperationException: RetrieveSCCMPKG Web Service method name is not valid.
       at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
       at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
       at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

    I have Changed the Webservice and also the Webconfig but I don't know what setting is false
    Can anybody who had this Problem help me
    Thx for your Answers in Advance

    MichaelF2050

All Replies

  • Wednesday, May 23, 2012 2:52 PM
    Moderator
     
      Has Code

    Have you tried debugging the service?

    Is that the full exception? Was there an InnerException?

    Have you tried narrowing the problem down? Remove code from the service until it works. For instance, what happens if your code only contained:

    Dim result = New List(Of Names)()
    Return result



    John Saunders
    WCF is Web Services. They are not two separate things.
    Use WCF for All New Web Service Development, instead of legacy ASMX or obsolete WSE
    Use File->New Project to create Web Service Projects