单声道asp.net无法映射路径'/'

时间:2013-05-10 10:40:32

标签: asp.net mono

我在Centos 6.4上安装了mono来测试msc asp网站。 它似乎一切正常 某些页面会返回此错误

System.InvalidOperationException
Failed to map path '/'

Description: HTTP 500.Error processing request.
Details: Non-web exception. Exception origin (name of application or object): 
System.Web.
   at System.Web.HttpRequest.MapPath (System.String virtualPath, System.String baseVirtualDir, Boolean allowCrossAppMapping) [0x00000] in <filename unknown>:0 
   at System.Web.HttpRequest.MapPath (System.String virtualPath) [0x00000] in <filename unknown>:0 
   at System.Web.Hosting.HostingEnvironment.MapPath (System.String virtualPath) [0x00000] in  <filename unknown>:0 
   at System.Web.Hosting.DefaultVirtualPathProvider.DirectoryExists (System.String virtualDir) [0x00000] in <filename unknown>:0 
   at System.Web.Configuration.WebConfigurationManager.FindWebConfig (System.String path, System.Boolean& inAnotherApp) [0x00000] in <filename unknown>:0 
   at System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration (System.String path, System.String site, System.String locationSubPath, System.String server, System.String userName, System.String password, Boolean fweb) [0x00000] in <filename unknown>:0 
   at System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName, System.String path, System.Web.HttpContext context) [0x00000] in <filename unknown>:0 
   at System.Web.Configuration.WebConfigurationManager.GetSection (System.String sectionName, System.String path) [0x00000] in <filename unknown>:0 
   at System.Web.Security.SqliteMembershipProvider.Initialize (System.String name, System.Collections.Specialized.NameValueCollection config) [0x00000] in <filename unknown>:0 
   at System.Web.Configuration.ProvidersHelper.InstantiateProvider (System.Configuration.ProviderSettings providerSettings, System.Type providerType) [0x00000] in <filename unknown>:0 
   at System.Web.Configuration.ProvidersHelper.InstantiateProviders (System.Configuration.ProviderSettingsCollection configProviders, System.Configuration.Provider.ProviderCollection providers, System.Type providerType) [0x00000] in <filename unknown>:0 
   at System.Web.Security.Membership..cctor () [0x00000] in <filename unknown>:0 

我在debian上做了同样的事情并且工作正常。

你有什么建议吗?

4 个答案:

答案 0 :(得分:0)

查找所有Server.MapPaths并从

更改

Server.MapPaths(@ “\”)

Server.MapPaths(Path.DirectorySeparatorChar)

答案 1 :(得分:0)

您是否检查了视图文件中的路径?提醒一下:

<script src="/myScript.js"></script>中的

'/'映射到/sites-available/.conf上定义的DocumentRoot文件夹,它可能类似于/ var / www

<script src="@Url.Content("~/scripts/script1.js")"></script>中的

'〜/'映射到你的mvc应用程序所在的路径,它可能有点像/ var / www / site1

'../'会尝试访问DocumentRoot文件夹上方的一个文件夹。这可能实际上是您的apache站点配置禁止的(推荐)。

另请注意,如果从monodevelop / xspServer运行mvc应用程序,文档根目录和mvc应用程序路径实际上是相同的,但如果您在apache上安装mvc应用程序,则它们可能不是相同的路径。

答案 2 :(得分:0)

发生此错误是因为单声道System.Web

中存在错误

它包含此检查(https://github.com/mono/mono/blob/mono-3.2.1-branch/mcs/class/System.Web/System.Web/HttpRequest.cs#L1565

    if (!isAppVirtualPath && !virtualPath.StartsWith (appVirtualPath, RuntimeHelpers.StringComparison))
        throw new InvalidOperationException (String.Format ("Failed to map path '{0}'", virtualPath));

要解决此问题,您可以在Mono surce代码中注释这些行并重新编译Mono。 这个错误也出现在最新的Mono中。

链接:

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

答案 3 :(得分:-1)

我有相同的错误,堆栈跟踪完全相同。 它仅在apache刚刚启动时的第一个请求中发生。第一次请求后没有发生错误。

我通过删除WebMatrix.WebData.dll

解决了这个问题

当您使用SimpleMembershipProvider时,这可能会产生一些影响,并且可能会影响MVC4上的OpenAuth功能。