无法打开Web项目 文件路径与URL不符。这两者需要映射到相同的服务器位置

来源:互联网 发布:ubuntu grub默认启动 编辑:程序博客网 时间:2024/05/29 20:03

一、前言:
虽然已经有很多类似文章了,但我遇到的有些问题仍然无法解决,直到自己摸出门道后才解决。写这个只是为了记录一个过程。


二、架设环境:
Windows Server 2003 Standard + SQL2000 + VS.net 2003 + .Netframework SDK1.1
使用的版本是CNBlogsDottextBeta2offbye汉化美化版,免汉化(虽然个别模块中仍留有英文痕迹),美化后首页很一般,不过自己做个首页不就行了,bug在测试期间没有发现。

下载:http://www.1828.com.cn/temp/CNBlogsDottextBeta2offbye汉化美化版.rar


三、安装调试:
1、解压缩到任意目录,例如D:/Blogs/CNBlogsDottext/

2、建立CNDotTextDB数据库,并执行OtherStuff/SQL Script的sql语句建表、建存储过程,在CNBlogsDottextBeta2offbye汉化美化版中你会发现有Homepage.aspx所需的存储过程blog_GetAggregatedBloggerList.sql

3、选择一个合适的web.config,例如我选择的适合这种方式访问:http://localaddress/blogusername/。修改web.config文件,找到<DbProvider type="Dottext.Framework.Data.SqlDataProvider, Dottext.Framework" connectionString="...">修改为你的数据库账号/密码/库名/主机地址。这里主机地址我用的是localhost,如要通过ip访问则这里需要改为本机IP或公网IP。

4、IIS6设置
- 应用程序缓冲池,新建立两个应用程序池,名为blog和blog-vs
- 关闭默认站点,建立新的站点,名称随意;主目录为D:/Blogs/CNBlogsDottext/DottextWeb;站点属性中应用程序名,例如cnblog;执行权限,纯脚本;应用程序池,blog;点配置,在通配符应用程序映射(执行顺序)中插入c:/windows/microsoft.net/framework/v1.1.4322/aspnet_isapi.dll,并取消“确认文件是否存在”的勾选。
- 在新站点建立虚拟目录,名为DotTextWeb;主目录为D:/Blogs/CNBlogsDottext/DottextWeb;站点属性中创建应用程序名,例如dottextweb;执行权限,纯脚本;应用程序池,blog-vs。
如不出意外,应该可正常进入http://localhost/,正常显示首页。点新注册,注册后不需要手动在web根目录下建立对应目录和default.aspx空文件,就可直接通过http://localhost/userid/,根据测试,没发现任何问题。

5、在VS.net 2003中打开该项目解决方案CnBlogsDotText.sln。曾有人说页面访问错误或显示程序错误需要用VS重新编译;打开解决方案后,个别项目显示错误,需要移除后重新添加。。非也非也~可能很多人发现那样去做了,仍然出现错误页面,项目也无法加入到解决方案中,解决办法往下看。

四、可能遇到的问题:
1、403错误 - 无法访问或无权限访问:这个是安装时大多会出现的错误,解决办法IIS中站点属性建立应用程序名、纯脚本执行权限、独立的应用程序池、(站点)配置中通配符应用程序映射中插入aspnet_isapi.dll。而web目录的访问权限默认即可,即administrators完全控制、users只读,并不需要让IUSR_机器名账户完全控制。

2、VS.net2003在打开方案时常常会报此错误:
无法打开Web项目“DottextWeb”。文件路径“...CNBlogsDottext/DottextWeb”与URL“http://localhost/DotTextWeb”不符。这两者需要映射到相同的服务器位置。HTTP错误500: Internal Server Error
解决办法可能有二
A 选择DotTextWeb虚拟目录的属性-->配置-->在通配符应用程序映射(执行顺序)这里看看,很有可能你不小心插入了aspnet_isapi.dll的映射,把它删除即可。如果还是提示相同错误,用方法B
B 当新建ASP.NET Web项目时,VS.NET会自动在VSWebCache中新建一个与项目同名的文件夹(如果已存在这样的文件夹,VS.NET会更新该文件夹),并在该文件夹中创建一个文件(项目名.csproj.user)和ASP.NET Web项目中所有目录的副本(副本是一个空目录,不包含任何文件)。当你打开ASP.NET Web项目,VS.NET会读取VSWebCache中的与该项目同名的文件夹, 如果VSWebCache中的文件夹的映射路径与这个ASP.NET Web项目不同就会出现上面的错误信息。而这时只有通过删除VSWebCache中的同名文件夹,让VS.NET重新建一个才能解决问题。

3、首页提示程序错误、非403错误,请检查web.config,问题八成出在这里,使用适合你并正确的web.config。

4、DotText解决方案中个别项目错误,这可能是你打开过多个不同版本DotText解决方案所至,可用问题2的两种解决办法来处理。

写得不大好,不过希望对想架设DotTextBlog的朋友有所帮助。

 

VS.net 2003小知识
1、VSWebCache的作用是为了支持脱机开发ASP.NET Web应用程序。假如你本来在一台WEB服务器进行ASP.NET项目的开发,现在因为某些原因,只能在自己的笔记本电脑上进行脱机开发,这时你就可以利用VS.NET的WEB脱机开发功能。在自己的笔记本电脑上打开这个项目,在VS.NET中,选中“项目”=》“Web项目”=》“脱机工作”。这时, VS.NET会将所有项目文件复制到VSWebCache中。这样你就可以在脱机情况下,通过打开VSWebCache中的项目文件来进行开发。当联机时, 选中“项目”=》“Web项目”选择“同步所有文件夹”,就可以将脱机开发的内容复制到服务器中。

2、VS.NET使用FrontPage server extensionsg与Web服务器进行通信,VS.NET无法直接修改Web服务器中的文件,所以VS.NET把VSWebCache作为一个中转站, 将编辑与编译的文件先放在VSWebCache中,然后通过FrontPage server extensionsg上传到服务器

 

参考:http://bbs.51cto.com/viewthread.php?tid=1582

原创粉丝点击