2009-01-30 62 views
0

我有一种情况是,我们正在汇总来自N个客户端的营销数据,其中客户端可以使用其任何后端托管HTML表单选择,每一个形式的行动都指向我们托管的路径。每个客户端都有一个不同的URL,没有auth(但有一些简单的数据验证),它通常工作得很好。HTTP POST到外部ASPX表单在某些情况下导致HTTP 405错误

但是,有一个小的皱纹,我似乎无法让我的头。

正在处理提交的数据的aspx驻留在路径上,我们称之为〜/ submit/default.aspx。我们的想法是,我们应该能够交给我们的合作伙伴沿着“http://sample.com/submit/?foo=bar”的行作为他们的形式的行为。但是,这样做会导致HTTP 405错误,“资源不允许”。

然而,设置为“http://sample.com/submit/default.aspx”的表单的作用很好,而且很花哨。

  • 的Default.aspx被设置为在IIS 6
  • .aspx文件扩展名是正确映射到正确的.NET动态库的默认文件名称之一,并具有动词GET,HEAD,POST和为映射激活DEBUG。

这些是我能想到的首先要仔细检查的两件事 - 其他人有什么想法?我宁愿使用IIS7的URL重写/路由,但不幸的是这不是一个选项 - 而且我还有一些额外的需求,其中“干净”的URL将更加可取,所以解决这个问题将是一个很好的选择核心问题才能打通。

回答

1

IIRC,如果请求的资源是目录,IIS将只使用默认文档。由于第一种情况下请求的资源不是,所以它永远不会通过缺省的文档处理程序 - 而是在POST上失败以注册未注册的脚本扩展(405)。

+0

+1这似乎很熟悉,但反预期 – annakata 2009-07-09 10:53:14

0

它可能取决于文档类型“http://sample.com/submit/?foo=bar”...如果您不知道如何处理返回给它的文档类型(然后将其返回给您,客户端),那么您可以得到一个http 405错误 - 这意味着它不知道如何处理该文件类型,服务器方式。也许可以尝试在驱动应用程序的web.config文件中加入类似 的内容。 HTTP处理程序是模块化的代码片段,以.net语言编写和编译,如果熟悉Java术语,则可用作“servlet”。它是向客户端写出一些东西的一段代码 - 在你的情况下,可能是渲染一个.doc文件,可以在你的处理程序类中以编程方式找到。

0

由于某种原因,它没有呈现我的代码示例!你们需要解码和编码小于和大于你的“你的答案”文本框中迹象....反正,

<httpHandlers> 
<add verb="your.class.to.handle.doc.files"/> 
</httpHandlers> 

是应该在你的web.config文件的内容。