我正在将一个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错误似乎是在回发期间页面实际丢失的结果。
答案 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请求。
答案 1 :(得分:0)
程序运行时使用旧的临时文件;当它启动时它会删除它们;它通过删除表格的所有文件来确定这些: -
HttpContext.Current.User.Identity.Name + "*.*";
一次删除了所有预期的文件。在新的Windows 8机器上,HttpContext.Current.User.Identity.Name
解析为空字符串,带来不可避免的后果......
请原谅我尴尬时请原谅。