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服务器。我应该如何进行调试?
答
更新:
我是通过招潮蟹调试卷曲和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
你可能需要到服务器,看看你所得到的实际的异常。这是一个控制台应用程序?确保你添加了file1.txt作为“CopyAlways”资源。如果它是一个网站,默认文件夹窗口查找文件是在Windows目录中。所以你可能需要一个Request.MapPath或类似的。 – turtlepick 2012-07-15 17:21:24
@flaviotsf:我试图从控制台应用程序上传到服务器。所以你的意思是,除了将file1.txt设置为“CopyAlways”之外,我还需要查看php服务器代码来弄清楚发生了什么? – kanu 2012-07-15 17:31:10
是的,该文件应该位于应用程序的同一目录中。除此之外,你的代码看起来很好!也许你需要在NetworkCredential构造函数上传递一个域? CURL命令是否工作?如果是这样,您可以使用system.diagnostics.process – turtlepick 2012-07-15 20:23:09