파일을 업로드하기 위해 REST 서비스를 작성했습니다. 문제가있는 것처럼 보입니다. 내가 사용하여 파일을 업로드하려고 할 때마다 그것이 나에게 오류를 제공하는 테스트 콘솔 응용 프로그램은 아래에 언급 :C#에서 파일을 업로드하는 REST 서비스 작성
An unhandled exception of type 'System.Net.WebException' occurred in System.dll
Additional information: The remote server returned an error: (400) Bad Request.
코드 - IFileUploaderService
[OperationContract]
[WebInvoke(Method = "POST",
UriTemplate = "/UploadImage",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
void FileUpload(Stream stream);
코드 - FileUploaderService.svc.cs을
public void FileUpload(Stream stream)
{
string FilePath = Path.Combine(HostingEnvironment.MapPath("~/FileServer/Uploads"), "1.txt");
int length = 0;
using (FileStream writer = new FileStream(FilePath, FileMode.Create))
{
int readCount;
var buffer = new byte[8192];
while ((readCount = stream.Read(buffer, 0, buffer.Length)) != 0)
{
writer.Write(buffer, 0, readCount);
length += readCount;
}
}
}
Web.Config
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1"/>
</system.web>
<system.serviceModel>
<bindings>
<webHttpBinding>
<binding name="UploaderService.FileUploaderService" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
transferMode="Streamed"
sendTimeout="00:05:00">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647"/>
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"></transport>
</security>
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="UploaderService.FileUploaderService" behaviorConfiguration="UploaderService.FileUploaderService">
<endpoint address="" binding="webHttpBinding" contract="UploaderService.IFileUploaderService" behaviorConfiguration="web">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="UploaderService.FileUploaderService">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
콘솔 응용 프로그램은 파일 업로드 : 나는 다른 곳에서 언급 한 솔루션을 본
static void Main(string[] args)
{
System.Uri url = new System.Uri("http://localhost:8082/FileUploaderService.svc/uploadimage");
string filePath = @"C:\test.jpg";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Accept = "application/octet-stream";
request.Method = "POST";
request.ContentType = "image/jpeg";
using (Stream fileStream = File.OpenRead(filePath))
using (Stream requestStream = request.GetRequestStream())
{
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int byteCount = 0;
while ((byteCount = fileStream.Read(buffer, 0, bufferSize)) > 0)
{
requestStream.Write(buffer, 0, byteCount);
}
}
string result;
using (WebResponse response = request.GetResponse())
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
result = reader.ReadToEnd();
}
Console.WriteLine(result);
}
을했으나 제대로 동작하지 않습니다. 내가 뭘 잘못하고 있는지 궁금해서 누군가가 나를 도울 수 있습니까?