Web Services does not work in mono 4

2019-03-27 10:16发布

问题:

I have an app that uses Webservices with ASP.Net and am supposed to maintain. So I was sharpening my skills on the topic. I have no problem running Webservice in Window with VS 2013 but have issues with mono.

Here is the error I get when I run the code

System.ArgumentNullException
Value cannot be null.
Parameter name: path1

Description: HTTP 500.Error processing request.

Details: Non-web exception. Exception origin (name of application or object): mscorlib.
Exception stack trace:
  at System.IO.Path.Combine (System.String path1, System.String path2) [0x00006] in <filename unknown>:0 
  at System.Web.Services.Configuration.WsdlHelpGeneratorElement.get_HelpGeneratorPath () [0x0000c] in <filename unknown>:0 
  at System.Web.Services.Protocols.DocumentationServerProtocol.Initialize () [0x001f1] in <filename unknown>:0 
  at System.Web.Services.Protocols.ServerProtocol.SetContext (System.Type type, System.Web.HttpContext context, System.Web.HttpRequest request, System.Web.HttpResponse response) [0x00022] in <filename unknown>:0 
  at System.Web.Services.Protocols.ServerProtocolFactory.Create (System.Type type, System.Web.HttpContext context, System.Web.HttpRequest request, System.Web.HttpResponse response, System.Boolean& abortProcessing) [0x00014] in <filename unknown>:0 

and here are the codes

WebService1.asmx

<%@ WebService Language="C#" CodeBehind="WebService1.asmx.cs" Class="DemoService.WebService1" %>

WebService1.asmx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Xml;

namespace DemoService
{
    /// <summary>
    /// Summary description for WebService1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public XmlElement AddMe(int a, int b)
        {
            XmlDocument doc = new XmlDocument(); 
            for(int i=0; i<5; i++)
            {
                XmlNode n = doc.CreateNode( XmlNodeType.Element,  i.ToString(), "me.com.aisee");
                for(int j=0; j<5; j++)
                {
                    //n.AppendChild(doc.CreateElement(j.ToString()));
                }
            }

            return doc.DocumentElement;

        }
    }
}

I don't what I miss here. to the best of my knowledge, it should just work fine. Here is my Mono version

~$ mono --version
Mono JIT compiler version 4.3.0 (tarball Fri Jun 12 11:43:58 UTC 2015)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
    TLS:           __thread
    SIGSEGV:       altstack
    Notifications: epoll
    Architecture:  amd64
    Disabled:      none
    Misc:          softdebug 
    LLVM:          supported, not enabled.
    GC:            sgen

回答1:

That's a bug in mono. You may look at here: https://bugzilla.xamarin.com/show_bug.cgi?id=37137

and https://bugzilla.xamarin.com/show_bug.cgi?id=39772



回答2:

It looks like Documentation page for webservice is not implemented yet. But the webservice should work despite this error. You can see it by adding ?WSDL at the end of url, i.e http://localhost/WebService1.asmx?WSDL