Tôi đã không chắc chắn chính xác làm thế nào để yêu cầu này vì vậy tôi đã thực hiện một SSCCEdịch vụ WCF đơn giản, không phải tất cả các thông số từ khách hàng làm thông qua các dịch vụ
tôi có dịch vụ WCF đơn giản này
[ServiceContract]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class EmailService
{
[WebInvoke(UriTemplate = "/SendEmail", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Xml)]
public bool SendEmail(EmailData data)
{
try
{
byte[] fileBinaryContents = Convert.FromBase64String(data.Enc64FileContents);
File.WriteAllBytes(data.FileName, fileBinaryContents);
return true;
}
catch (Exception)
{
return false;
}
}
}
[DataContract(Namespace = "http://somenamespace/")]
public class EmailData
{
[DataMember]
public string FileName { get; set; }
[DataMember]
public string EmailAddress { get; set; }
[DataMember]
public string Enc64FileContents { get; set; }
}
và Tôi đang cố gắng để có được một khách hàng Winforms để gọi phương thức webservice; đây là những gì tôi có
string URI = " http://localhost:59961/EmailService/SendEmail";
string fileContents = Convert.ToBase64String(File.ReadAllBytes("test.txt"));
EmailData emailData = new EmailData
{
EmailAddress = "[email protected]",
Enc64FileContents = fileContents,
FileName = "test.txt"
};
XNamespace ns = "http://somenamespace/";
XElement emailDataElement = new XElement(ns + "EmailData");
emailDataElement.Add(new XElement(ns + "FileName", emailData.FileName));
emailDataElement.Add(new XElement(ns + "Enc64FileContents", emailData.Enc64FileContents));
emailDataElement.Add(new XElement(ns + "EmailAddress", emailData.EmailAddress));
var xml = emailDataElement.ToString(SaveOptions.DisableFormatting);
using (WebClient wc = new WebClient())
{
wc.Headers[HttpRequestHeader.ContentType] = "application/xml; charset=utf-8";
string response = wc.UploadString(URI, "POST", xml);
}
bây giờ ở phía bên dịch vụ, một số thuộc tính không được hiển thị trong ảnh chụp màn hình sau.
Tại sao số FileName
có giá trị phù hợp nhưng những giá trị khác thì không?
+1 cho link SSCCE :) –
làm tập tin của bạn có chứa bất kỳ ký tự không hợp lệ cho xml giá trị? bạn đã cố mã hóa chúng chưa? –
@Maras là một tệp văn bản siêu đơn giản (chỉ có một từ). Tôi cũng đã thử gửi một chuỗi bình thường thay vì chuỗi base64 và điều đó cũng không giúp được gì. –