проблема web.config - PullRequest
       3

проблема web.config

1 голос
/ 05 мая 2011

У меня вопрос по MS webservices и конфигурации web.config.

У меня есть решение с двумя проектами внутри:

  • Webservice ws_A a
  • Сайт web_A

Мой веб-сайт связан с моим веб-сайтом с помощью «Веб-ссылок» из Visual Studio. Мой веб-сервис подключен к моей базе данных:

public static SqlConnection sqlConn = new SqlConnection(myString);

В моем веб-сервисе я получаю строку подключения из webservice web.config следующим способом:

String sa = ConfigurationManager.ConnectionStrings["bdd"].ConnectionString;

Я звоню в веб-службу через веб-сайт (WebReferences) и извлекаю из него некоторую информацию.

Но чтобы получить строку в веб-сервисе, мне нужно объявить эту строку на веб-сайте web.config. Это не логично, поскольку только строка веб-службы нуждается в этой строке для сохранения данных в базе данных.

Если я не объявляю строку на веб-сайте web.config, у меня возникает исключение nullReferenceException в веб-службе.

Кто-нибудь знает эту проблему и решение, чтобы не размещать ConnectionString на веб-сайте? Он не должен знать существование базы данных!

РЕДАКТИРОВАТЬ: Чтобы использовать мой веб-сервис, я делаю это на сайте:

WebService1.WS_A webservice = new WebService1.WS_A();

Ответы [ 3 ]

1 голос
/ 05 мая 2011

Если я понимаю, что вы говорите, это невозможно в настоящее время. На сайте фактически размещен веб-сервис. Таким образом, вы должны иметь всю конфигурацию в web.config веб-сайта.

Если вы не хотите, чтобы на сайте была строка подключения к базе данных, на этом этапе вам нужно создать отдельный проект для размещения веб-службы. Затем вы можете настроить соединение с базой данных внутри этого отдельного проекта, и оно будет совершенно неизвестно первому веб-сайту.

На этом этапе вы по-настоящему будете использовать веб-сервис, а не создавать модный сервис, который размещается самостоятельно и ничего не покупает за простой класс.

1 голос
/ 05 мая 2011

Это нормальное поведение, потому что веб-сервис будет работать в контексте веб-приложения и, следовательно, будет обращаться к файлу конфигурации веб-приложения.
То же самое, если у вас есть слой доступа к данным, который подключается к базе данных., вы можете использовать доступ к данным с веб-приложением или приложением Windows или консольным приложением или ..., чтобы доступ к данным получал доступ к файлу конфигурации проекта, который он запускает в своем контексте.

0 голосов
/ 05 мая 2011

Каждый проект имеет доступ только к своим собственным ресурсам конфигурации и не может получить доступ к ресурсам конфигурации другого проекта. Итак, если вам нужно создать экземпляр вашего веб-сервиса с помощью строки подключения (не уверен, зачем это нужно, но я отвлекся ...) от вашего веб-сайта с использованием сохраненной строки подключения, тогда строка подключения должна быть доступна как ресурс для сайт.

Опять же, я до сих пор не уверен, почему вам необходимо вызывать ваш веб-сервис со строкой соединения, так как я использую сервисы ASMX и WCF, и мне никогда не приходилось предоставлять строку соединения на клиентском прокси для позвонить в сервис.

Однако я должен признать, что мой опыт работы с различными параметрами конфигурации / настройки для веб-служб в .NET относительно ограничен, поэтому я никоим образом не исключаю, что в вашем случае может потребоваться создать экземпляр клиентский прокси со строкой подключения.

...