我在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上做了同样的事情并且工作正常。
你有什么建议吗?
答案 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
中存在错误 if (!isAppVirtualPath && !virtualPath.StartsWith (appVirtualPath, RuntimeHelpers.StringComparison))
throw new InvalidOperationException (String.Format ("Failed to map path '{0}'", virtualPath));
要解决此问题,您可以在Mono surce代码中注释这些行并重新编译Mono。 这个错误也出现在最新的Mono中。
链接:
答案 3 :(得分:-1)
我有相同的错误,堆栈跟踪完全相同。 它仅在apache刚刚启动时的第一个请求中发生。第一次请求后没有发生错误。
我通过删除WebMatrix.WebData.dll
解决了这个问题当您使用SimpleMembershipProvider时,这可能会产生一些影响,并且可能会影响MVC4上的OpenAuth功能。