Visual Studio在运行Web项目时删除源代码

时间:2015-07-27 09:20:12

标签: c# visual-studio-2013

我正在将一个Web项目从Windows XP / Visual Studio 2010升级到Windows 8.1和Visual Studio 2013.当我这样做时,我得到一个迁移报告,显示两条警告和另外15条消息,其中没有一条似乎有任何后果。然后,我将Web项目的目标框架调整为4.5.1并运行项目。

这会显示我期望的网页,但与其进行的任何交互(例如,在下拉列表中选择新项目)都会导致错误: -

  

HTTP错误405.0 - 不允许的方法

     

您要查找的页面   无法显示,因为正在使用无效方法(HTTP动词)   使用

试图找到原因,我发现所有源代码(.aspx文件,.cs文件,.config文件和.css文件)都丢失了。幸运的是,我可以从迁移过程所做的备份中恢复它们,但这仍然是相当惊人的。谁能告诉我如何防止这种情况?什么项目设置可能负责?

编辑我在第一次显示网页后尝试将代码复制回项目目录。然后在下拉列表中选择一个新项目,但会再次删除源代码。因此,HTTP错误似乎是在回发期间页面实际丢失的结果。

2 个答案:

答案 0 :(得分:1)

  

由于无效,无法显示您要查找的页面   正在使用方法(HTTP动词)。

原因1

出现此问题的原因是客户端使用不符合HTTP规范的HTTP方法发出HTTP请求。

决议:

确保客户端发送包含有效HTTP方法的请求。为此,请按照下列步骤操作: 单击“开始”,在“开始搜索”框中键入“记事本”,右键单击“记事本”,然后单击“以管理员身份运行”。

注意如果系统提示您输入管理员密码或进行确认,请键入密码或提供确认。 在“文件”菜单上,单击“打开”。在“文件名”框中,键入%windir%\system32\inetsrv\config\applicationhost.config,然后单击“打开”。 在ApplicationHost.config文件中,找到标记。 确保所有处理程序都使用有效的HTTP方法。 保存ApplicationHost.config文件。

原因2:

出现此问题的原因是客户端通过将POST方法发送到配置为由StaticFile处理程序处理的页面来发出HTTP请求。例如,客户端将POST方法发送到静态HTML页面。但是,为StaticFile处理程序配置的页面不支持POST方法。

决议:

将POST请求发送到配置为由StaticFile处理程序以外的处理程序处理的页面(例如,ASPClassic处理程序)。或者,更改StaticFile处理程序正在处理的请求,以便它是GET请求而不是POST请求。

Reference

答案 1 :(得分:0)

程序运行时使用旧的临时文件;当它启动时它会删除它们;它通过删除表格的所有文件来确定这些: -

HttpContext.Current.User.Identity.Name + "*.*";

一次删除了所有预期的文件。在新的Windows 8机器上,HttpContext.Current.User.Identity.Name解析为空字符串,带来不可避免的后果......

请原谅我尴尬时请原谅。