问题描述
我在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 (将#修改为@)