Click here to Skip to main content
15,885,546 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
Hi
I want to write a web service to use in outlook text messaging. I wrote this code using Office 2010 Mobile Service Guidelines
this is my code:
C#
using System;
using System.IO;
using System.Web;
using System.Xml;
using System.Data;
using System.Text;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Security.Authentication;
using System.Collections.Generic;
using System.Web.Services.Description;
using System.ComponentModel;

namespace OMS2
{
    /// <summary>
    /// A WebService implementing the Outlook 2007 Mobile Service interface.
    /// Allows you to send SMS messages from Outlook 2007!
    /// </summary>
    [WebService(Namespace = "http://schemas.microsoft.com/office/Outlook/2006/OMS")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class oms : WebService
    {
        /// <summary>
        /// Returns information about the service. The returned XML contains
        /// information about the service, if it supports SMS, MMS or both etc.
        /// See the ServiceInfo.xml for more information about the XML format.
        /// </summary>
        /// <returns></returns>
        [WebMethod]
        public string GetServiceInfo()
        {
            return ReadXml("serviceInfo.xml");
        }

        /// <summary>
        /// Method authenticating a user and geting user information.
        /// Returns an XML string with some basic user information (phone number and e-mail).
        /// </summary>
        /// <param name="xmsUser">An XML string containing the user credentials.</param>
        /// <returns>An XML string with user information.</returns>
        [WebMethod]
        public string GetUserInfo(string xmsUser)
        {
            try
            {
                //XmlDocument xml = new XmlDocument();
                //xml.LoadXml(xmsUser);

                //XmlNamespaceManager nmManager = new XmlNamespaceManager(xml.NameTable);
                //nmManager.AddNamespace("o", "http://schemas.microsoft.com/office/Outlook/2006/OMS");

                //string username = xml.SelectSingleNode("/o:xmsUser/o:userId", nmManager).InnerText;
                //string password = xml.SelectSingleNode("/o:xmsUser/o:password", nmManager).InnerText;

                //Ung1881Proxy proxy = new Ung1881Proxy();
                //proxy.Login(username, password);

                return ReadXml("userInfo.xml");
            }
            catch (Exception)
            {
                StringWriter stringWriter = new StringWriter();
                XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);

                xmlWriter.WriteStartElement("userInfo", "http://schemas.microsoft.com/office/Outlook/2006/OMS");

                xmlWriter.WriteStartElement("error");
                xmlWriter.WriteAttributeString("code", "invalidUser");
                xmlWriter.WriteAttributeString("severity", "failure");
                xmlWriter.WriteEndElement();

                xmlWriter.WriteEndElement();

                string error = stringWriter.GetStringBuilder().ToString();

                xmlWriter.Close();
                stringWriter.Dispose();

                return error;
            }
        }

        /// <summary>
        /// Method sending an SMS/MMS message to one or more recepients.
        /// </summary>
        /// <param name="xmsData">An XML string with the list of recepients and the content of the message.</param>
        /// <returns>An XML string with a status message.</returns>
        [WebMethod]
        public string SendXms(string xmsData)
        {
            //XmlDocument xml = new XmlDocument();
            //xml.LoadXml(xmsData);

            //XmlNamespaceManager nmManager = new XmlNamespaceManager(xml.NameTable);
            //nmManager.AddNamespace("o", "http://schemas.microsoft.com/office/Outlook/2006/OMS");

            //string username = xml.SelectSingleNode("/o:xmsData/o:user/o:userId", nmManager).InnerText;
            //string password = xml.SelectSingleNode("/o:xmsData/o:user/o:password", nmManager).InnerText;

            try
            {
                //List<string> recipients = new List<string>();
                //List<string> messages = new List<string>();

                //foreach (XmlNode node in xml.SelectNodes("//o:recipient", nmManager))
                //{
                //    recipients.Add(node.InnerText);
                //}

                //foreach (XmlNode node in xml.SelectNodes("//o:content[@contentType='text/plain']", nmManager))
                //{
                //    messages.Add(node.InnerText);
                //}

                //Ung1881Client client = new Ung1881Client(username, password);

                //foreach (string number in recipients)
                //{
                //    foreach (string message in messages)
                //    {
                //        client.SendMessage(number, message);
                //    }
                //}

                return BuildError("ok", false); ;
            }
            catch (AuthenticationException)
            {
                return BuildError("invalidUser", true);
            }
            catch (Exception)
            {
                return BuildError("others", true);
            }
        }

        /// <summary>
        /// Simple helper method reading an file from disk and
        /// returning the content as a string.
        /// </summary>
        /// <param name="fileName">The relative path to the file you want to read.</param>
        /// <returns>The file content.</returns>
        private string ReadXml(string fileName)
        {
            StreamReader sr = new StreamReader(Server.MapPath(fileName), Encoding.Unicode);
            string xml = sr.ReadToEnd();
            sr.Dispose();
            return xml;
        }

        /// <summary>
        /// Simple helper method building the return XML for the SendXms method.
        /// </summary>
        /// <param name="errorCode">The error code.</param>
        /// <param name="failed">If this was a failure or not.</param>
        /// <returns>The XML fragment to return to the client.</returns>
        private string BuildError(string errorCode, bool failed)
        {
            StringWriter stringWriter = new StringWriter();
            XmlTextWriter wr = new XmlTextWriter(stringWriter);

            wr.WriteStartDocument();
            wr.WriteStartElement("xmsResponse", "http://schemas.microsoft.com/office/Outlook/2006/OMS");
            wr.WriteStartElement("error");
            wr.WriteAttributeString("code", errorCode);
            wr.WriteAttributeString("severity", failed ? "failure" : "neutral");
            wr.WriteEndElement();
            wr.WriteEndElement();
            wr.WriteEndDocument();

            wr.Close();
            string returnValue = stringWriter.GetStringBuilder().ToString();
            stringWriter.Dispose();
            return returnValue;
        }
    }
}


The problem is when i want to add web service url in outlook text messaging account setting, an error message displays this is the error => The webservice address is incorrect or corrupted. Check the web service address or contact your administrator. webservice uri => http://localhost/TestOms/OMS.asmx Please help me Thanks
Posted

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900