Ubuntu 18.04:Mono-xsp4:Web API:错误500:名为“ MS_attributerouteWebApi”的路由已在路由集合中路线名称必须唯一

问题描述

我在asp.net中开发了一个Web API。我正在尝试运行主机,并使此Web API在Ubuntu 18.04服务器中运行。我的Ubuntu机器设置: 我安装了单声道xsp4 我将Apache 2安装为Web服务器。

我能够访问Apache主页(Apache已正确安装)。我的Web API网站配置:

<VirtualHost *:960>
    ServerName myubuntuvm1
    Alias /gibaapi "/home/useradmin/gibaapi"
    #ServerAlias www.myubuntuvm1.com
    DocumentRoot /home/useradmin/gibaapi
    ErrorLog /home/useradmin/gibaapi/logs/error.log
    CustomLog /home/useradmin/gibaapi/logs/access.log combined

    MonoServerPath gibaapi "/usr/bin/mod-mono-server4"
    MonoDebug gibaapi true
    MonoSetEnv gibaapi MONO_IOMAP=all
    MonoApplications gibaapi "/gibaapi:/home/useradmin/gibaapi"

    AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx .axd
    <Location "/gibaapi">
            #Allow from all
            #Order allow,deny
            Require local
            MonoSetServerAlias gibaapi
            SetHandler mono
            SetoutputFilter DEFLATE
            SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip dont-vary
    </Location>
    <IfModule mod_deflate.c>
            AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript
    </IfModule>
</VirtualHost>

当我尝试在localhost:960 / gibaapi / api / AccountType的浏览器中访问我的网站时,出现500错误: System.ArgumentException 名为“ MS_attributerouteWebApi”的路由已在路由集合中。路由名称必须唯一。 参数名称名称

说明:HTTP500。错误处理请求。

详细信息:非网络异常。异常来源(应用程序或对象的名称):System.Web。

App_start / RouteConfig.cs

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",url: "{controller}/{action}/{id}",defaults: new { action = "Index",id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "NoArgument",url: "{controller}/{action}",defaults: new { action = "Index"}
        );
    }

App_start / WebApiConfig.cs:

public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",routeTemplate: "api/{controller}/{id}/{id2}",defaults: new { id = RouteParameter.Optional,id2 = RouteParameter.Optional }
        );            
    }

Global.asax.cs:

protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }

AccountTypeController.cs:

public async Task<IHttpActionResult> GetAsync()
    {
        try { 
            var json = await repository.GetData();
            var r = ParseResponse<AccountTypeResponse>(json);
            return Ok(r.ReturnValue);
        }
        catch (Exception e)
        {
            return BadRequest(e.Message);
        }
    }

StackTrace:

at System.Web.Routing.RouteCollection.Add (System.String name,System.Web.Routing.RouteBase item) [0x00039] in <666d184601be4c9187c7c7f952e28fb6>:0 
at System.Web.Http.WebHost.Routing.HostedHttpRouteCollection.Add (System.String name,System.Web.Http.Routing.IHttpRoute route) [0x0000d] in <b2d5f889b8d5408ca3d4aa24eb5e947e>:0 
at System.Web.Http.Routing.AttributeRoutingMapper.MapAttributeRoutes (System.Web.Http.HttpConfiguration configuration,System.Web.Http.Routing.IInlineConstraintResolver constraintResolver,System.Web.Http.Routing.IDirectRouteProvider directRouteProvider) [0x0006a] in <f99f496cb0d249c1a945c1fcabce1695>:0 
at System.Web.Http.HttpConfigurationExtensions.MapHttpAttributeRoutes (System.Web.Http.HttpConfiguration configuration) [0x00019] in <f99f496cb0d249c1a945c1fcabce1695>:0 
at GibaApi_V2.WebApiConfig.Register (System.Web.Http.HttpConfiguration config) [0x00001] in <fd45925befb44f04a956cb2c3568109d>:0 
at System.Web.Http.GlobalConfiguration.Configure (System.Action`1[T] configurationCallback) [0x00014] in <b2d5f889b8d5408ca3d4aa24eb5e947e>:0 
at GibaApi_V2.WebApiApplication.Application_Start () [0x00001] in <fd45925befb44f04a956cb2c3568109d>:0 
at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj,System.Reflection.BindingFlags invokeAttr,System.Reflection.Binder binder,System.Object[] parameters,System.Globalization.CultureInfo culture) [0x0006a] in <9f0df102fe6e4cfea29d2e46f585d8a5>:0 

web api error.log:

[Mon Oct 05 11:50:34.446904 2020] [authz_core:error] [pid 795:tid 140665732192000] [client 127.0.0.1:52682] AH01630: client denied by server configuration: /home/useradmin/gibaapi/AccountType

我不确定为什么会出现错误。任何帮助表示赞赏。

编辑: 当我尝试在Web api目录中运行命令xsp4并禁用apache虚拟站点时,仍然出现相同的错误(端口9000)。似乎是单声道xsp4的问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)