ASP.NET HttpWebRequest POST返回“远程服务器返回错误:(405)方法不允许”。只有在VS dev服务器

问题描述:

我使用HttpWebRequest将数据发布到ASP.NET网页(当前在ASP.NET开发服务器上运行)以下是代码;ASP.NET HttpWebRequest POST返回“远程服务器返回错误:(405)方法不允许”。只有在VS dev服务器

string url = "http://localhost:3333/MySite/"; 
WebResponse response = null; 
try { 
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); 

    ASCIIEncoding encoding = new ASCIIEncoding(); 
    string postData = "data=test"; 
    byte[] dataBtyes = encoding.GetBytes(postData); 

    request.UserAgent = "Custom Agent"; 
    request.Method = "POST"; 
    request.KeepAlive = true; 
    request.ContentType = "application/x-www-form-urlencoded"; 
    request.ContentLength = dataBtyes.Length; 

    Stream stream = request.GetRequestStream(); 
    stream.Write(dataBtyes, 0, dataBtyes.Length); 
    stream.Close(); 

    response = request.GetResponse(); 
} catch (Exception e) { 

} 

使用HTTPModule我拦截来自“自定义代理”的请求并发回自定义标题。这适用于GET请求,但是我想发送的数据可能会超出GET请求所允许的限制,所以我想使用POST(如上所述)。

我已经在真实的IIS服务器上测试过这段代码,它工作正常,但是Visual Studio开发服务器在发送POST数据后每次调用GetResponse()都会导致发生异常“405方法不允许” )

任何人都可以提供解释,为什么开发服务器似乎拒绝POST请求?

编辑:问题标题和正文更新,以强调与VS开发服务器驻留的问题。

+1

请找到一种方法来捕获请求并将其添加到您的问题。也很高兴看到响应(如果有的话)。你可以用Firebug插件来获得它,或者如果你想要一些轻量级的嗅探器尝试使用这一个http://www.nirsoft.net/utils/smsniff.html –

+0

我无法在环回上嗅探本地数据包。 (注意,这个问题已经更新) –

我发现在发送到文件夹地址时返回“405方法不允许”错误。 (使用上面的问题代码)

VS开发服务器貌似不允许;

...但很满意;

IIS服务器产生用于误差;

...但很满意;

+0

哦,这让我想起IIS具有特定于/的Handler映射。这意味着aspx,svc等的处理程序映射不会自动应用 - 如果您指向/ WebSite /而不是/WebSite/Default.aspx – Independent