Ajax文件上载路由/查询字符串 - DirectoryNotFoundException

时间:2013-10-01 12:08:24

标签: c# asp.net ajax ajaxcontroltoolkit .net-4.5

我有一个带有上传部分的WebApp。
要将文件上传到sql数据库,请使用Ajax Toolkit Fileupload控件。

我总是遇到与this post类似的错误,但经过数小时的测试后,我发现了造成问题的原因。

我的上传控件位于SidDetails.aspx页面上,如果直接打开页面 同
foo.com/Pages/SID/SidDetails.aspx
我可以上传文件。

Page Route

但如果我通过路线访问该页面
foo.com/SID/My/1
我收到500内部服务器错误

所以我检查了导致异常的页面链接
foo.com/SID/My/1/?contextKey= {DA8BEDC8-B952-4d5d-8CC2-59FE922E2923}&安培;做= 1&安培; GUID = BD327457-2013-1E97-6ADE-28612D63758E

对我来说,看起来这就是问题,但我不知道如何解决这个问题。
我已经尝试添加具有查询值的路由
Route with Query
但我不知道你是否会这样做。


无法找到路径的一部分' C:\ Windows \ TEMP_AjaxFileUpload \ E0E386A6-F5B5-1012-F6E5-1872E4D6EF69'。
这是上传控件抛出的异常。

我想保留路线,但我该如何解决问题呢?

我使用的是Visual Studio 2012,.net 4.5和AjaxControlToolkit 7.0930

亲切的问候
CarnVanBeck

2 个答案:

答案 0 :(得分:1)

我也遇到过这种情况,在疯了之后我就修好了。

  1. 下载ajaxtoolkit source code project并将其打开。

  2. 更改以下行:

    this._uploadUrl = 'AjaxFileUploadHandler.axd';
    

    为:

    this._uploadUrl = '/AjaxFileUploadHandler.axd';
    
  3. 重建项目,获取新的.dll并将其复制到/bin目录。

  4. 这将解决问题,为处理程序提供正确的路径。

    PS:我来到这里:

    • 我注意到对处理程序的一些奇怪的重复调用,只发生在路由路径中 (例如www.site.com/projects/edit/mypage),上传失败。

    • 我注意到在测试页面中,放置在我网站的主目录中,上传工作正常。

    然后我来到this页面并注意到上述行。

答案 1 :(得分:0)

如果您的应用在集成模式池中运行,则必须在web.config文件中添加以下行:

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
      <add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" 
                 type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit" />
    </handlers>
    <validation validateIntegratedModeConfiguration="false"/>
  </system.webServer>