如何在web.config不可用时解析对applicationSettings的引用

Joh*_*ams 2 c# class-design web-config asmx visual-studio

我试图在.ASMX Web服务中获取代码并将其更改为类库项目.Web服务项目有一个web.config文件,其中包含:

<applicationSettings>
    <myService.Properties.Settings>
        <setting name="DownloadChunkSize" serializeAs="String">
            <value>100000</value>
        </setting>
Run Code Online (Sandbox Code Playgroud)

..并且FileService.asmx.cs文件中的代码使用它来检索值:

int chunkSize = (int)Properties.Settings.Default.DownloadChunkSize;
Run Code Online (Sandbox Code Playgroud)

当我尝试重新构建此代码以消除.asmx Web服务时,我的类库项目中出现编译时错误,因为不再有web.config可用.让我试着解释一下我到目前为止所做的事情(以及为什么):

这样做的动机是简化我的项目.也就是说,我有一个带有.asmx项目的Vstudio解决方案.它有一些方法,并封装了与供应商提供的另一个.asmx Web服务的通信.

我尝试的新设计如下:

项目1是一个名为ProxyASMX的类库项目,其中包含对供应商Web服务的Web引用.我这里没有提供代码; 它只是一个指向供应商Web服务的小app.config.

Project 2是一个类库项目,引用了ProxyASMX.dll.此FileService.cs文件中的代码与我的原始Web服务相同,但[webmethod]属性已被删除.这是我编译时遇到问题的项目.

Project 3是一个带有2个HTTPHandler的Web应用程序项目 - Upload.ashx和Download.ashx.该项目将引用Project 2类库.我尝试用原始解决方案中更全面的web.config内容替换小的默认web.config内容,但是当这不起作用时,我想我最好向专家咨询一下这个冒险.

我希望上面的草图很清楚.我认为这应该是非常可行但现在我不太确定.

veg*_*rby 5

您可以将应用程序设置添加到类库中.因此,您在"使用它们"的项目中添加"应用程序设置".然后,您只需将这些配置部分复制到"项目堆栈"中.

因此,如果我理解你是正确的,你需要将DownloadChunkSize设置添加到Project 2并将此部分复制到Project 3中的web.config.这将是这样的:

<applicationSettings>
    <Project2.Properties.Settings>
        <setting name="DownloadChunkSize" serializeAs="String">
            <value>100000</value>
        </setting>
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法访问Project 3中的此设置:

Project2.Properties.Settings.Default.DownloadChunckSize
Run Code Online (Sandbox Code Playgroud)

在项目2中:

Properties.Settings.Default.DownloadChunckSize
Run Code Online (Sandbox Code Playgroud)