5

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サービスにあると思います。

助けてくださいミー :'(

4

2 に答える 2