继承的属性不会出现在asmx文件的soap示例中

Gri*_*inn 9 c# asp.net inheritance web-services asmx

我有两个类,WebServiceRequest和OrderRequest.每个类都有属性.OrderRequest继承自WebServiceRequest - 如下所示:

    public class WebServiceRequest
    {
        private string mAuthenticationToken;

        public string AuthenticationToken
        {
            get { return mAuthenticationToken; }
            set { mAuthenticationToken = value; }
        }
        ...
}
Run Code Online (Sandbox Code Playgroud)
public class OrderRequest : WebServiceRequest
{

    private string mVendorId;
    public string VendorId
    {
        get { return mVendorId; }
        set { mVendorId = value; }
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

OrderRequest通过WebMethod公开.在查看公开OrderRequest的ASMX文件的WSDL(即MyWebService.asmx?WSDL)时,两个属性都是可见的 - 正如它们应该的那样.但是,当您查看公开OrderRequest的Web方法的SOAP示例时,只有VendorId属性可见,而不是继承的AuthenticationToken属性.这是怎么回事?

注意:我已将此问题作为MS Connect上的错误发布:https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedidID = 520200

Gri*_*inn 4

即使在微软确认它是一个错误(https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=520200)并且我已经放弃之后,我还是设法偶然发现了我的问题的解决方案并将约翰的回答标记为已接受。这是解决方案:

http://code.msdn.microsoft.com/WsdlHelpGenerator/Release/ProjectReleases.aspx?ReleaseId=412

转到那里,下载文件,然后在 Web.config 文件的 system.web 部分下添加以下行:

<webServices>
 <wsdlHelpGenerator href="CustomWsdlHelpGenerator.aspx"/>
</webServices>
Run Code Online (Sandbox Code Playgroud)

href 属性应指向文件在项目中的相对位置。谢谢你的帮助约翰。