MVC3 を使用して Web アプリを作成していますが、オブジェクトをコントローラーに渡して表示しようとすると、型などを認識していないようです。
Job オブジェクトがあり、次のようなa をJobService
返します。Job
public Job View(int jobId)
{
Job job=_jobRepository.Jobs.Where(x => x.Id == jobId).FirstOrDefault();
return job;
}
WebService 内で、次のように View を呼び出します。
[WebMethod]
public Job GetJob(GetJobRequest getJobRequest)
{
var getJobResponse = new GetJobResponse();
getJobResponse.Job = _jobService.View(getJobRequest.Id);
return getJobResponse.Job;
}
次に、コントローラーはこれを呼び出します。
public class JobsController : Controller
{
public ActionResult Index()
{
var jobModel = new JobModel();
using (var webServiceSoapClient = new WebServiceSoapClient())
{
var getJobRequest = new GetJobRequest();
getJobRequest.Id = 26038;
jobModel.Job = webServiceSoapClient.GetJob(getJobRequest);
}
return View(jobModel);
}
}
そして、このエラーをスローしています:
System.Web.Services.Protocols.SoapException: サーバーは要求を処理できませんでした。---> System.InvalidOperationException: XML ドキュメントの生成中にエラーが発生しました。---> System.InvalidOperationException: System.Data.Entity.DynamicProxies.Job_55765AEC3BD02AFD7E0527408ED5746E1054965A59B82A127B5A688C19C61D5B 型は予期されていませんでした。XmlInclude または SoapInclude 属性を使用して、静的に認識されていない型を指定します。Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write9_Job (文字列 n、文字列 ns、ジョブ o、ブール値 isNullable、ブール値 needType) で Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write18_GetJobResponse (オブジェクト [] p) で.Serialization.GeneratedAssembly.ArrayOfObjectSerializer13.Serialize(Object objectToSerialize,
最初はサービスに a を渡していGetJobResponse
ましたが、今はできるだけ単純にして機能させようとしましたが、まだ理解できません。XmlInclude などの使用を示唆する他の質問があることがわかりましたが、それでも機能しません。
これを適用する:
public string SerializeObjectToXMLString(object theObject)
{
// Exceptions are handled by the caller
using (System.IO.MemoryStream oStream = new System.IO.MemoryStream())
{
System.Xml.Serialization.XmlSerializer oSerializer = new System.Xml.Serialization.XmlSerializer(theObject.GetType());
oSerializer.Serialize(oStream, theObject);
return Encoding.Default.GetString(oStream.ToArray());
}
}
テストでViewから返されたJobにはテストに合格するので、問題は私のWebサービスにあると思います。
助けてくださいミー :'(