Web客户端上传文件 - 内部服务器错误500

问题描述:

我一直在试图通过下面的C#代码,模仿,下列curl命令:Web客户端上传文件 - 内部服务器错误500

curl.exe –v –u user:pwd –XPOST –T "file1.txt" –H "Content-Type:text/plain" "http://example.com/xx/xx/xx/insert" 
string url = "http://example.com/xx/xx/xx/insert"; 
string fileName = @"file1.txt"; 

var client = new WebClient(); 
client.Credentials = new NetworkCredential("user", "pwd"); 
client.Headers.Add("Content-Type", "text/plain");   
byte[] responseBinary = client.UploadFile(url, "POST", fileName); 
string response = Encoding.UTF8.GetString(responseBinary); 

它给了我一个“内部服务器错误500”。我想我试图上传到的服务器是一个PHP服务器。我应该如何进行调试?

+0

你可能需要到服务器,看看你所得到的实际的异常。这是一个控制台应用程序?确保你添加了file1.txt作为“CopyAlways”资源。如果它是一个网站,默认文件夹窗口查找文件是在Windows目录中。所以你可能需要一个Request.MapPath或类似的。 – turtlepick 2012-07-15 17:21:24

+0

@flaviotsf:我试图从控制台应用程序上传到服务器。所以你的意思是,除了将file1.txt设置为“CopyAlways”之外,我还需要查看php服务器代码来弄清楚发生了什么? – kanu 2012-07-15 17:31:10

+0

是的,该文件应该位于应用程序的同一目录中。除此之外,你的代码看起来很好!也许你需要在NetworkCredential构造函数上传递一个域? CURL命令是否工作?如果是这样,您可以使用system.diagnostics.process – turtlepick 2012-07-15 20:23:09

更新:

我是通过招潮蟹调试卷曲和Web客户端(控制台应用程序)的交通。它看起来像cURL只发送file1.txt的内容并将标题保持为“text/plain”。 Web客户端将内容处理,文件名,内容类型添加到file1.txt的内容中,并将标题设置为“multipart/form-data”。

有没有反正我可以阻止webclient的这种行为?

感谢, 卡努

+0

更新:使用webrequest [链接](http://msdn.microsoft.com/en-us/library/system.net.webrequest.aspx) – kanu 2012-07-19 17:27:23