2010-08-07 5 views
2

현재 Silverlight 응용 프로그램의 구성 파일로 xml을 사용하고 있습니다. 나는 파일을 읽는 데 아무런 문제가 없지만 이제는 웹을 통해 파일을 업데이트해야하기 때문에 (실버 라이트가 글꼴 색상, 크기 등의 미리보기를 표시 함), 내가 생각한 유일한 방법은 전체 파일을 생성하고 덮어 쓰는 것입니다 기존의 업로드를 통해.외부 설정 파일에 대한 더 나은 제안

더 쉬운 방법이 있나요?

+0

흠 ... 당신은 그것을 변경해야하는 경우 클라이언트로 복사하고 서버에 다시 업로드하십시오. 파일 대신 데이터베이스 테이블에 구성 설정을 넣고 서버의 설정을 업데이트 할 수는 없습니까 ?? –

+0

감사합니다.하지만 내 설정에 대한 이러한 설정에는 다른 COM에서 호스팅 될 수있는 데이터베이스 서버에 대한 데이터베이스 연결이 포함됩니다. 때로는 자체 데이터베이스 파일/데이터베이스 서버를 호스팅하지 않는 것과 같은 규칙이 있습니다. 따라서 설정은 외부 파일에 있어야합니다. –

+0

@C_Rance : "사전 방법"을 사용하면됩니다. 서버에서'UpdateConfiguration ("FontSize", 45615);와 같은 업데이트 명령을 보내는 SL 클라이언트에서 파일 편집을 수행합니다. 어느 것이 값 쌍의 배열을 취할 수 있어야합니다. 전체 파일을 다시 업로드하는 것이 더 쉬울 수도 있습니다. "dictioanary way"에 대한 보너스는 xsd를 통해 유효성을 검사하는 대신 개별적으로 업데이트의 유효성 검사를 쉽게 구현할 수 있다는 것입니다. –

답변

1

글쎄, 내 자신의 대답을 발견, 여기도 공유했다.

xml 파일을 읽을 때 XML 용 linq를 사용하고 있습니다. 그래서 그래서이 작업을 수행하여 doc.save위한 옵션() 이있다 : 나는 SS에 저장된 XML 파일을 가지고

System.Xml.Linq.XDocument doc = System.Xml.Linq.XDocument.Parse(s); 

System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
System.IO.StringWriter sr = new System.IO.StringWriter(sb); 
doc.Save(sr); 
string ss = sb.ToString();//result 
sr.Close(); 

. 다음 사용하여 웹 클라이언트의 OpenWriteCompleted, 나는 웹 클라이언트의 OpenWriteAsync를 사용

Stream outputStream = e.Result; 
byte[] fileContent = Encoding.UTF8.GetBytes(ss); 
outputStream.Write(fileContent, 0, fileContent.Length); 
outputStream.Close(); 

사용, URI를 내 일반적인 핸들러의 URI 될 것입니다. 아이디어의 대부분은 자신의 사이트에서 등장하면서 저자 (Nipun 망치고) @에 일반 핸들러 내부 는

FileStream fs = File.Open(context.Server.MapPath("~/ClientBin/" + "test.txt"), FileMode.Create); 

byte[] buffer = new byte[4096]; 
int bytesRead; 
while ((bytesRead = context.Request.InputStream.Read(buffer, 0, buffer.Length)) != 0) 
{ 
    fs.Write(buffer, 0, bytesRead); 
} 
fs.Close(); 

신용

http://www.c-sharpcorner.com/UploadFile/nipuntomar/FileUploadsilverlight03182009030537AM/FileUploadsilverlight.aspx