나는 실버 라이트 4에서 wcf 휴식 서비스에 이미지를 게시하려고하지만 요청에서 공감을 받으면 예외가 발생합니다. 예외는System.Net.WebException : 원격 서버에서 NotFound 오류를 반환했습니다. ---> 실버 라이트 파일 게시 WCF 휴식 서비스
시스템입니다. .Net.WebException : 원격 서버가 NotFound 오류를 반환했습니다. ---> System.Net.WebException : 원격 서버 오류를 반환했습니다 : NotFound. at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult) at System.Net.Browser.BrowserHttpWebRequest. <> c_ DisplayClassa.b _9 (Object sendState) at System.Net.Browser.AsyncHelper. <> C_ DisplayClass4.b _1 (sendState 개체) 내부 예외 스택 추적 --- --- 끝에서 System.Net.Browser.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod, 객체 상태)에서 System.Net . 내가 안드로이드에서 액세스하려고 할 때 Admin.Popups.AddCategory.OnImageGetResponseCompleted에서 Browser.BrowserHttpWebRequest.EndGetResponse (IAsyncResult를 asyncResult) (IAsyncResult를 아칸소는)} 서비스에
내 다른 모든 기능, 심지어 이것을 잘 작동 나는 이미 모양을 가지고 실버 도메인 간 정책을 시도했지만 해당 코드가 적용되지 않는다고 생각합니다.
private void UpLoadImage()
{
string URL = Utilities.GetServiceUrl() + "AddCategoryImage?CategoryId=2&ContentType=image&apikey=" + Utilities.GetApiKey();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);
request.Method = "POST";
request.ContentType = "text/plain";
request.ContentLength = SelectedFile.Length;
request.BeginGetRequestStream(OnImageGetRequestStreamCompleted, request);
}
private void OnImageGetRequestStreamCompleted(IAsyncResult ar)
{
try
{
if (SelectedFile != null)
{
HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
using (Stream postStream = request.EndGetRequestStream(ar))
{
using (Stream source = SelectedFile.OpenRead())
{
byte[] buffer = new byte[2048];
int bytesRead;
while ((bytesRead = source.Read(buffer, 0, buffer.Length)) > 0)
{
postStream.Write(buffer, 0, bytesRead);
}
}
}
request.BeginGetResponse(new AsyncCallback(OnImageGetResponseCompleted), request);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void OnImageGetResponseCompleted(IAsyncResult ar)
{
try
{
HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar);
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
string result = sr.ReadToEnd();
}
}
catch (Exception ex)
{
this.Dispatcher.BeginInvoke(delegate()
{
MessageBox.Show(ex.Message);
});
}
}
WCF 기능은
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "AddCategoryImage?CategoryId={CategoryId}&ContentType={ContentType}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
bool AddCategoryImage(int CategoryId, string ContentType, Stream Image);
과 기능 구현 내가 WCF는 maxReceivedMessageSize는 65K이며, 내가 영리, 65K보다 더 나 파일을 업로드하려고했다 만들면 기본적 문제를 해결 한
public static bool AddCategoryImage(int CategoryId, string ContentType,Stream Image)
{
SqlConnection sqlCon = new SqlConnection(Params.GetConnectionString());
SqlCommand sqlCmd = new SqlCommand("UPDATE Categories SET Cat_Img = @Cat_Img,Cat_Img_Type = @Cat_Img_Type WHERE Cat_ID = @Cat_ID", sqlCon);
sqlCmd.Parameters.Add("@Cat_Img", SqlDbType.Image).Value = Utility.ConvertStreamToByteArray(Image);
sqlCmd.Parameters.Add("@Cat_Img_Type", SqlDbType.NVarChar, 32).Value = ContentType;
sqlCmd.Parameters.Add("@Cat_ID", SqlDbType.Int).Value = CategoryId;
try
{
sqlCon.Open();
return sqlCmd.ExecuteNonQuery() > 0 ? true : false;
}
catch (Exception ex)
{
Error.CreateError(ex.Message, "Category.cs", "AddCategoryImg(int,string,Stream)");
}
finally
{
sqlCon.Close();
}
return false;
}