Как я могу встроить настройки веб-службы в DLL? - PullRequest
0 голосов
/ 17 марта 2009

Я пишу DLL в VB.NET, на которую будет ссылаться веб-сайт ASP.NET.

Проект DLL содержит ссылку на веб-сервис. Когда я добавил веб-службу в проект, в файл app.config была добавлена ​​часть информации о конфигурации.

Чтобы заставить это работать на хост-сайте, мне пришлось скопировать информацию из файла 'app.config' в 'web.config' сайта.

Кто-нибудь знает, как я могу встроить эти настройки в мою скомпилированную DLL? Я не хочу, чтобы потребители моей DLL вставляли этот блок настроек в свои файлы web.config.

Ответы [ 3 ]

4 голосов
/ 26 марта 2009

svc.Endpoint.Address ожидает объект типа System.ServiceModel.EndpointAddress, поэтому на самом деле то, что требуется, находится в строках ...

Dim address As New System.ServiceModel.EndpointAddress("http://Whatever")
Dim binding As New System.ServiceModel.BasicHttpBinding()

' The binding object is already set up with the default values normally found in the
' <bindings> section of the App.Config, but can be overriden here, eg...
binding.ReceiveTimeout = new System.TimeSpan(0,20,0)

Dim ws As New MyWebServiceSoapClient(binding, address)
1 голос
/ 17 марта 2009

Кто-нибудь знает, как я могу вставлять эти настройки в мою скомпилированную DLL? я не хочу, чтобы потребители моей DLL должен вставить этот блок настроек в их файл web.config

Да, вы можете установить адрес в коде. В сгенерированном прокси-классе у вас есть свойство Url (для прокси-сервера веб-сервисов старого стиля asp.net) или свойство Endpoint.Address (для прокси-сервера веб-сервиса, созданного WCF).

//MyWebService is a non-WCF generated proxy
MyWebService ws = new MyWebService();
ws.Url = "http://whatever/";

или

//MyWebServiceSoapClient is a WCF generated proxy
MyWebServiceSoapClient svc = new MyWebServiceSoapClient();
svc.Endpoint.Address = "http://whatever";

Хотя это, вероятно, означало бы жесткое кодирование этих значений в вашей dll, и я бы не советовал ...

0 голосов
/ 17 марта 2009

На самом деле, копировать и вставлять это решение. Так всегда работал .NET. Настройки конфигурации для любого внешнего (библиотечного) кода должны войти в файл конфигурации для «исполняемого» приложения. Это может быть файл .exe.config приложения для консоли или приложения-службы Windows или один из файлов web.config для ASP.NET, WCF или другого веб-интерфейса. применение.

См. Если файл app.config для DLL должен находиться в «основном конфиге»… что нам делать с ссылками WCF в DLL? .

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

Если ваши настройки были в DLL, то потребители вашей DLL не смогут редактировать настройки.

Если у вас есть «настройки», которые нельзя изменять, то, как показали https://stackoverflow.com/a/686126/76337 и https://stackoverflow.com/a/655452/76337, вы должны конфигурировать вещи в коде, а не в неконфигурируемом файле конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...