在我的一个ASP.NET应用程序中,由于下面显示的错误,突然之间我无法在Visual Studio 2013中运行它。它似乎试图从一个甚至不存在的路径打开web.config。我的所有项目代码(包括web.config)都位于C:\ Projects \ SourceCode \ AFEManager \ Trunk \ AFEManager.Web下。我在这里发现了一些遇到类似错误的用户的帖子,但解决方案似乎有所不同,到目前为止我找不到适用于我的情况。我查看了TraceLogFiles目录和最近的日志文件有五天了,所以它显然没有记录任何东西,因为我一直有这个问题。任何建议都表示赞赏。
答案 0 :(得分:20)
在我的情况下,我之前删除了D:\ My Documents \ My Web Sites \中的所有文件夹 然后我发现了错误 我的解决方案文件夹中有一个文件.vs \ config \ applicationhost.config 它包含对已删除文件夹的引用。因此,我删除了applicationhost.config,然后在我的项目属性网页中按下了“创建虚拟目录”按钮。它重新创建了文件和文件夹
答案 1 :(得分:19)
即使我不能说我完全理解所有细节,我也能够解决这个问题。我将尝试以最好的方式描述这种情况,希望有更深入了解的其他人可以进一步澄清。
在我的工作站上完成所有开发之后,有人建议我开始在为我设置的新VM环境中完成这项工作。所以我在那里安装了VS 2013并从那里复制了各种项目的源代码。但是,而不是遵循我之前的C:\ Projects \ SourceCode [ProjectName]的本地路径约定...这次我决定使用VS安装期间设置的目录,c:\ users [MyUser] \ My Documents \ Visual Studio 2013 \ Projects [ProjectName]。不久之后,我们的基础架构团队进行了更改,以便我的主目录c:\ users \ rmayer现在指向一个公共网络驱动器,\ totalsafety \ TSUsers \ rmayer。一切都继续工作,没有任何问题。
然而,由于我在这个VM环境中工作的各种困难,我决定使用源代码的原始本地路径返回到我的工作站上进行开发工作。这是当我尝试通过VS运行我的代码时,我开始遇到上述错误的时候。我开始学习的是IIS Express使用的applicationhost.config文件位于:\ totalsafety \ TSUsers \ rmayer \ My Documents \ IISExpress \ config。它包含我的每个Web项目的条目;与此问题相关的部分有一个看起来像这样的部分:
<site name="AFEManager.Web-Site" id="8">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\rmayer\Documents\My Web Sites\AFEManager.Web-Site" />
</application>
<application path="/AFEManager" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Projects\SourceCode\AFEManager\Trunk\AFEManager.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:19257:localhost" />
</bindings>
</site>
当时在applicationPool =“Clr4IntegratedAppPool”下列出的物理路径属性是根据我在VM环境中工作时使用的本地路径设置的。现在,无论我是在本地工作还是在VM中工作,由于移动了用户的主目录,这个文件都被共享,当我在工作站工作时,此路径无效。通过将此路径更新为C:\ Projects \ SourceCode \ AFEManager \ Trunk \ AFEManager.Web,它现在可以从我的工作站正常工作。
同样,我对这应该如何工作有一个有限的理解,但它告诉我的是,我将无法从多个环境进行开发工作(不再是我想要的),除非本地路径是所有这些都是一致的。如果我对此是正确的,这似乎不是一个理想的设计。
答案 2 :(得分:6)
我更改了解决方案文件夹中vs \ config \ applicationhost.config中的虚拟目录路径。
答案 3 :(得分:5)
当我将项目文件夹移动到新计算机时,我遇到了这个问题。问题是VS在applicationhost.config
文件夹中的配置文件(.vs/
)中注册了站点,但没有在%USERPROFILE%\My Documents\My Web Sites\
内创建文件夹。如果您只是在项目属性(Web选项卡)中单击“创建虚拟目录”,那么这将是不够的。
.vs/
文件夹%USERPROFILE%\My Documents\My Web Sites\
答案 4 :(得分:2)
在我的情况下,项目位于网络上,而不是我的本地磁盘。将项目复制到本地后,问题得以解决。希望它可以节省一些有同样问题的时间。
答案 5 :(得分:2)
您可以将web.config的路径更改为applicationhost.config文件中的实际路径。该文件位于/.vs/config文件夹中。
更改此文件中的路径后,保存并重新启动项目,它解决了我的问题。
这种情况正在发生,因为我有不同的工作站,但项目正在保存在不同的文件夹中。
答案 6 :(得分:2)
删除Visual Studio创建的.VS文件夹。 它可能隐藏在您的项目结构中。 取消隐藏文件夹并查找.vs文件夹,然后删除该文件夹并重建应用程序。
答案 7 :(得分:1)
解决此问题的最简单方法。
出现此错误的大概原因是从另一台PC复制项目。
解决方案:
C:\ Users \ Sydur Rahman \ Documents \ My Web Sites \ MyProjectName-Site 至 C:\ Users \ hp \ Documents \ My Web Sites \ MyProjectName-Site
注意:请确保您在两个applicationhost文件中都进行了更改。
仅此而已。现在您的项目将按预期运行!
答案 8 :(得分:0)
谢谢PongGod !!我无法对你的答案发表评论,但我想发帖,因为我在运行Orchard的实例时遇到了完全相同的问题。在我的情况下,一切都运行良好,直到我找到了一堆旧的项目文件:
%USERPROFILE%\My Documents\My Web Sites\
并开始删除它们没有明显的理由。然后我尝试在调试模式下从Visual Studio启动Orchard并收到上面的错误消息。将相同的修复程序应用于我的applicationhost.config文件后,现在一切正常。
在我的情况下,我假设目录混淆了,因为我最初从Visual Studio和Web Matrix运行默认的Orchard文件。然后,我下载了完整的源文件,并开始从一个完全不同的目录运行文件。再次感谢。
答案 9 :(得分:0)
我遇到了同样的问题,我很简单地解决了这个问题。我的问题出现在我在git存储库中执行合并操作之后,在合并操作之后Visual Studio有些如何将我的默认项目URL更改为我的伙伴计算机的默认URL,从最后一次推送到我的存储库。 所以这就是我如何解决这个错误:
希望它适合所有人:)
答案 10 :(得分:0)
这是我找到的解决方案。
(1)在 | YourSolution | \ .vs \ config
中找到 applicationhost.config 文件(2)将VirtualDirectory PhysicalPath修改为您的项目。
(3)重启解决方案。开始项目。
(4)如果它仍然无法正常工作,请尝试检查IISExpress配置中的设置。如果没有网站设置,请将设置复制并粘贴到 | UserOnYourComputer | \ Documents \ IISExpress \ config \ applicationhost.config
(5)将id更改为IISExpress applicationhost.config中未使用的其他id。
(6)开始你的项目。
答案 11 :(得分:0)
所有这些答案之后,我找到了解决方案。在IIS中删除te WebSite并重新命名。为什么?因为我在安装框架4.5和URL Rewrite之前创建了网站。
答案 12 :(得分:0)
转到项目目录:
..\\{ProjectDir}\\.vs\\{ProjectName}\\config
然后删除applicationhost.config
文件并重新编译您的解决方案。
仅此而已。
答案 13 :(得分:0)
这些步骤帮助我克服了这个错误
1.在 Windows 资源管理器中,找到与网站关联的 web.config 文件。
2.右键单击 web.config 文件
3.点击属性。
4. 单击“安全”选项卡,然后单击“编辑”。
5.点击添加。
6.在“输入要选择的对象名称”框中,键入计算机名\IIS_IUSRS,单击“检查名称”,然后单击“确定”。
注意* Computername 是计算机名称的占位符。
7.单击以选中“读取”复选框,然后单击“确定”。
8.在“Web.config 属性”对话框中,单击“确定”。