更改ASP.net应用程序根目录?因此,ASP.net有一个“应用程序根”的概念。是IIS中为应用程序设置的根目录对应的URL的路径部分。波浪号(~)映射到ASP.netURL中的该路径,因此如果ASP.net认为我的应用程序位于/MyApp,那么服务器控件中的某些内容我将以“~/Scripts/script.js”结尾表单解析为(并发送到浏览器)“/MyApp/Scr??ipts/script.js”。这是一个远景,但有没有办法可以任意更改此应用程序根目录?我实际上在另一个目录下有一个应用程序,我正在使用URL重写来使其可用而无需为目录名称添加前缀,但是ASP.net总是在我使用~的任何地方为目录名称添加前缀。我真的很想~解析一个空字符串。可以吗?您应该能够通过编写自定义VirtualPathProvider来更改~映射到的语义。这可能就是它的样子。我在一个简单的案例中对此进行了测试,但它可能需要抛光。我建议您先将其用作简单的测试应用程序,然后再将其移至真实场景。这使得分离关注点和迭代它们变得更加容易。使用系统;使用系统集合;使用System.IO;使用System.Linq;使用System.Web;使用System.Web.Caching;使用System.Web.Hosting;publicclassTildeModifyingVPP:VirtualPathProvider{//将其更改为您想要的~映射到privateconststringPseudoRoot="~/PseudoAppRoot/";publicstaticvoidAppInitialize(){HostingEnvironment.RegisterVirtualPathProvider(newTildeModifyingVPP());}privatestringResolvePath(stringvirtualPath){//让它成为app相对的,即~/...virtualPath=VirtualPathUtility.ToAppRelative(virtualPath);//将~/更改为我们的伪根returnPseudoRoot+virtualPath.Substring(2);}publicoverrideboolFileExists(stringvirtualPath){returnbase.FileExists(ResolvePath(virtualPath));}publicoverrideVirtualFileGetFile(stringvirtualPath){returnnewDelegatingVirtualFile(virtualPath,base.GetFile(ResolvePath(virtualPath)));}publicoverrideboolDirectoryExists(stringvirtualDir){returnbase.DirectoryExists(ResolvePath(virtualDir));}publicoverrideVirtualDirectoryGetDirectory(stringvirtualDir){returnnewDelegatingVirtualDirectory(virtualDir,base.GetDirectory(ResolvePath(virtualDir)));}publicoverrideCacheDependencyGetCacheDependency(stringvirtualPath,IEnumerablevirtualPathDependencies,DateTimeutcStart){virtualPathDependencies=virtualPathDependencies.Cast().Select(vpath=>ResolvePath(vpath));返回base.GetCacheDependency(virtualPath,virtualPathDependencies,utcStart);}}classDelegatingVirtualFile:VirtualFile{privateVirtualFile_underlyingFile;publicDelegatingVirtualFile(stringvirtualPath,VirtualFileunderlyingFile):base(virtualPath){_underlyingFile=underlyingFile;}publicoverrideStreamOpen(){return_underlyingFile.Open();}}classDelegatingVirtualDirectory:VirtualDirectory{privateVirtualDirectory_underlyingDir;公共DelegatingVirtualDirectory(字符串virtualPath,VirtualDirectoryunderlyingDir):base(virtualPath){_underlyingDir=underlyingDir;}publicoverrideIEnumerableChildren{get{return_underlyingDir.Children;}}publicoverrideIEnumerableDirectories{get{return_underlyingDir.Directories;_underlyingDir.文件;因此,您在IIS中设置了网站,然后在网站内创建了一个“应用程序”,并希望“应用程序”将CSS/JavaScript/Images解析到网站的根目录,而不是子应用程序?为什么你需要把代字号放进去?为什么不做"/scripts/script.js""/css/main.css"所以它总是来自根。您将无法按照设置网站/应用程序的方式做您想做的事。应用程序根目录只是应用程序根目录的路径。如果您希望您的“网站”和“应用程序”都将“/”作为您的应用程序根目录,则必须创建两个网站并让它们监听不同的主机标头(例如:mysite.com和myapp.mysite.com).这样,应用程序的根目录就是网站“/”的根目录,而不是应用程序文件夹的根目录。以上就是C#学习教程:改变ASP.net应用根目录?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
