我们有一个静态的html / webform网站,该网站缺乏搜索功能,我能够在昨天几个小时后获得雅虎BOSS(建立自己的搜索服务),我得到它的工作(仍在努力添加缺少的功能,如我想知道该类的配置选项,因为我在App_Code中有一个BossSearch.cs,其中一些字段设置在顶部:
public class BossSearch
{
String sResultsPage = "~/searchResults.aspx";
String sSearchString="";
String sApiKey = ConfigurationSettings.AppSettings["BossApiKey"];
String sSite = "www.oursite.com"; //without http://
String sQuery = "http://boss.yahooapis.com/ysearch/web/v1/{0}%20+site:{1}?appid={2}&format=xml&start={3}&count={4}";
String sStart = "0";
Uri address;
WebProxy webproxy = new WebProxy("http://192.168.4.8:8080");
bool bUseProxy = true;
int nResultsPerPage = 10;
int nTotalResults = 0;
...
正如您所看到的,我从web.config文件中获取了BossApiKey,但是我在类中声明了所有其他文件,我应该将它们全部放在web.config文件中吗?如果我想在其他网站上重复使用课程(我应该说类课程?)?我能把它变成一个dll,它的优点是什么?我读到一个dll有自己的配置文件,这是存储这些设置的方式吗?
为我的无知道歉,因为我不熟悉开发应用程序(仍在学习)
答案 0 :(得分:2)
如果在数据库或web.config中声明所有这些内容,则每次重新配置搜索引擎时都不需要重新编译
答案 1 :(得分:2)
我正在努力重用和易用,然后我建议为你的控制写一个custom configuration section。这可以是您分发给其他应用程序的DLL的一部分,并允许您具有最大的灵活性和对其他.net应用程序的显式可移植性。
享受!
答案 2 :(得分:2)
您阅读的有关具有自己的配置文件的.NET程序集的内容并不完全正确;一个网站有web.config
个文件,一个在根目录中,零个/一个在每个子目录中。如果应用程序中的.NET程序集调用标准配置API,它将从web.config
获取其数据。
WinForms应用程序和[appname] .exe.config文件也是如此;任何使用标准配置API的程序集都将从中获取数据。
所有这一切并不是说任何程序集都无法定义自己的配置机制,从任何地方提取数据。
是的;如果你打算重新使用这个代码,那么你正在考虑正确的思路;将代码放在自己的程序集中,让它从Config文件中获取数据,这样就不需要为每个应用程序重新编译它了。
答案 3 :(得分:2)
您应该只将值存储在应用程序的单个位置。对于ASP.NET应用程序,web.config文件是适合这类事情的地方。如果此值发生更改,则无需重新编译应用程序。
如果您决定将代码放入单独的类库并仍希望使用配置文件来存储api密钥,则应注意需要在应用程序或网站中输入appSetting
密钥配置文件 - 您无法为类库定义配置文件。
您可能会觉得有用的另一种方法是创建一个包装类来存储您的设置。你可以使用静态方法来查找你的appSettings
密钥,这样你就可以获得一个很好的编译时间来获取api密钥,而不是在任何地方输入appSettings
密钥的名称。