J
Jeremy Chapman
I'm creating a PDS Extender, and have so far been unable to have pds call
it.
I created a class library in c#, and compiled to a dll. The dll is called
InteriorHealthPDSExtender.dll and it is strong named. I then registered the
dll on the project server using regasm, then I dragged it into the GAC
(windows/assembly directory)
I then edited the registry
I added a string value to
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\11.0\MS Project\WebClient
Server\ProjectServer
The name is PDSExtentionEx1 and the data is
InteriorHealthPDSExtender.PDSExtender
I've included my code to my PDS Extender at the bottom of the email. What
should happen, is any request that is not handled by PDS should be forwarded
to my extender. All my extender does right now is return the name of the
request. Instead I'm getting a 'Some part of the request syntax is invalid
(general status).' error (status 2).
Help please.
//start code--------------------------------
using System;
using System.Xml;
using System.Runtime.InteropServices;
namespace InteriorHealth
{
namespace ProjectServer
{
/// <summary>
///
/// </summary>
[Guid("A1FD5F61-167B-4b4f-8212-53FC5081D1C4")]
public interface IInteriorHealthPDSExtender
{
/// <summary>
///
/// </summary>
/// <param name="sXML"></param>
/// <param name="sPDSInfoEx"></param>
/// <param name="nHandled"></param>
/// <returns></returns>
string XMLRequestEx(string sXML, string sPDSInfoEx, ref int nHandled);
}
/// <summary>
/// Summary description for Class1.
/// </summary>
[Guid("CE0FF90D-B987-4040-809F-BF47E2CBFA06"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(IInteriorHealthPDSExtender))]
public class PDSExtender : IInteriorHealthPDSExtender
{
public string XMLRequestEx(string sXML, string sPDSInfoEx, ref int
nHandled)
{
string strResult = "";
XmlDocument pXMLRequest = new XmlDocument();
pXMLRequest.InnerXml = sXML;
XmlDocument pXMLPDSInfoEx = new XmlDocument();
pXMLPDSInfoEx.InnerXml = sPDSInfoEx;
XmlElement pRoot = pXMLRequest.DocumentElement;
XmlNode pRequestNode = pXMLRequest.FirstChild;
strResult = "<Reply><HRESULT>0</HRESULT><STATUS>0</STATUS>" +
pRequestNode.LocalName + "</Reply>";
nHandled = 1;
return strResult;
}
}
}
}
//end code---------------------
it.
I created a class library in c#, and compiled to a dll. The dll is called
InteriorHealthPDSExtender.dll and it is strong named. I then registered the
dll on the project server using regasm, then I dragged it into the GAC
(windows/assembly directory)
I then edited the registry
I added a string value to
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\11.0\MS Project\WebClient
Server\ProjectServer
The name is PDSExtentionEx1 and the data is
InteriorHealthPDSExtender.PDSExtender
I've included my code to my PDS Extender at the bottom of the email. What
should happen, is any request that is not handled by PDS should be forwarded
to my extender. All my extender does right now is return the name of the
request. Instead I'm getting a 'Some part of the request syntax is invalid
(general status).' error (status 2).
Help please.
//start code--------------------------------
using System;
using System.Xml;
using System.Runtime.InteropServices;
namespace InteriorHealth
{
namespace ProjectServer
{
/// <summary>
///
/// </summary>
[Guid("A1FD5F61-167B-4b4f-8212-53FC5081D1C4")]
public interface IInteriorHealthPDSExtender
{
/// <summary>
///
/// </summary>
/// <param name="sXML"></param>
/// <param name="sPDSInfoEx"></param>
/// <param name="nHandled"></param>
/// <returns></returns>
string XMLRequestEx(string sXML, string sPDSInfoEx, ref int nHandled);
}
/// <summary>
/// Summary description for Class1.
/// </summary>
[Guid("CE0FF90D-B987-4040-809F-BF47E2CBFA06"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(IInteriorHealthPDSExtender))]
public class PDSExtender : IInteriorHealthPDSExtender
{
public string XMLRequestEx(string sXML, string sPDSInfoEx, ref int
nHandled)
{
string strResult = "";
XmlDocument pXMLRequest = new XmlDocument();
pXMLRequest.InnerXml = sXML;
XmlDocument pXMLPDSInfoEx = new XmlDocument();
pXMLPDSInfoEx.InnerXml = sPDSInfoEx;
XmlElement pRoot = pXMLRequest.DocumentElement;
XmlNode pRequestNode = pXMLRequest.FirstChild;
strResult = "<Reply><HRESULT>0</HRESULT><STATUS>0</STATUS>" +
pRequestNode.LocalName + "</Reply>";
nHandled = 1;
return strResult;
}
}
}
}
//end code---------------------