Добавление Заголовков SOAP для веб-сервиса Конечной точки HTTP SQL 2005 в Visual Studio 2008

Я пытаюсь использовать заголовки SOAP для обеспечения аутентификации SQL при доступе к веб-сервису, опубликованному на моем поле SQL 2005 через Конечную точку HTTP. На конечной точке я установил Аутентификацию = (Основной), Порты = (SSL) и LOGIN_TYPE = СМЕШАННЫЙ. Я могу генерировать WSDL и использовать его очень хорошо в учетных данных домена использования VS. Однако, когда я пытаюсь реализовать заголовки SOAP для обеспечения аутентификации SQL, я сталкиваюсь с проблемами. Я следовал за MS BOL к букве (http://msdn.microsoft.com/en-us/library/ms189619 (SQL.90) .aspx), но по некоторым причинам, я не отправляю заголовок SOAP. Я проверил это при помощи скрипача (http://www.fiddler2.com/fiddler2/), чтобы захватить мои сообщения https и посмотреть на них. Любая справка значительно ценилась бы. Включенный код, который я использовал (имена изменились для защиты невинного),

namespace ConsoleApplication.WebService
{
class Program
{
    static void Main(string[] args)
    {
        //Prevents error due to self signed cert
        ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

        Stuff stuff = new Stuff();

        stuff.DoSomthing();
    }
}

public class Stuff
{
    [System.Web.Services.Protocols.SoapHeaderAttribute("sqlSecurity")]
    public int DoSomthing()
    {
        Webservice ws = new Webservice();

        CredentialCache myCreds = new CredentialCache();
        myCreds.Add(new Uri(ws.Url), "Basic", new NetworkCredential("netaccount", "netpass", "domain"));
        ws.Credentials = myCreds;

        ws.sqlSecurity = new SqlSoapHeader.Security();
        ws.sqlSecurity.Username = "sqluser";
        ws.sqlSecurity.Password = "sqlpass";

        try
        {
            ws.SelectUserAccountByUserName("someuser");
        }
        catch (SoapException ex)
        {

            string txterror = ex.Detail.InnerText;
            return 0;
        }

        return 1;
    }
}

public partial class Webservice
{
    public SqlSoapHeader.Security sqlSecurity;
}
}

Этот код использует класс SqlSoapHeader, как зарегистрировано в ссылку BOL сверху.

Я ошибка при вызове ws. SelectUserAccountByUserName () с "Выполняют разрешение, отклоненное" вследствие того, что "netaccount" пользователь не имеет прав выполнить сохраненный proc. Но снова, это вызвано тем, что согласно сообщению мыла, никакой заголовок с sqluser информацией не передается.

5
задан 23 February 2010 в 23:22
поделиться

1 ответ

Атрибут SoapHeaderAttribute необходимо добавить к веб-методу . Добавлять его к какому-нибудь произвольному вызывающему методу бесполезно.

3
ответ дан 15 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: