0

我在 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

4 回答 4

0

找到你所有的 Server.MapPaths 并从

Server.MapPaths(@"\")

Server.MapPaths(Path.DirectorySeparatorChar)

于 2013-05-10T11:03:55.883 回答
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 应用程序,它们可能不是相同的路径。

于 2014-11-11T16:05:38.340 回答
0

发生此错误是因为 mono 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 源代码中注释这些行并重新编译 Mono。这个错误也在最新的 Mono 中。

链接:

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

于 2015-02-01T22:11:41.717 回答
-1

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

我通过删除 WebMatrix.WebData.dll 解决了这个问题

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

于 2014-10-30T10:35:50.797 回答