【问题标题】:Relative path from applicationsettings inside web.configweb.config 中 applicationsettings 的相对路径
【发布时间】:2011-11-08 11:39:02
【问题描述】:

我有一个向 asp.net 应用程序提供邮件发送功能的 DLL,该 DLL 从一个 xml 文件中读取其配置,该文件的路径在 app.config 设置中设置。

我将配置移植到我的 web.config 中的 applicationsettings 部分:

  <applicationSettings>
      <MyNamespace.MailLibrary.Properties.Settings>
        <setting name="MailTemplatesConfigurationPath" serializeAs="String">
          <value>**./_mail/MailTemplatesConfiguration.xml**</value>
        </setting>
        <setting name="SenderAddress" serializeAs="String">
          <value>noreply@mydomain.com</value>
        </setting>
      </MyNamespace.MailLibrary.Properties.Settings>
  </applicationSettings>

一切正常,但我找不到指定相对于 webapp 根目录的路径的方法,MailTemplatesConfigurationPath 值总是相对于 IIS 根目录,所以:

./_mail/MailTemplatesConfiguration.xml

变成

c:\windows\system32\inetsrv\_mail\MailTemplatesConfiguration.xml

有没有办法引用网站的根路径?

【问题讨论】:

    标签: asp.net dll iis-7 web-config


    【解决方案1】:

    如果您的问题是您不希望在 dll 中使用 server.MapPath,请让使用此值的函数接受 rootPath 的另一个参数,该参数可以从调用代码传入。调用代码,不在dll中,可以使用MapPath获取rootPath值。

    【讨论】:

    • 你说得对,我不希望组件被绑定到 web-app 环境......我正在寻找一个更“干净”的解决方案(我认为有一个,即使我现在没有时间找到它 :S )但最终将基本根作为依赖项传递的想法是好的。谢谢...
    【解决方案2】:

    试试这个:

    <value>**~/_mail/MailTemplatesConfiguration.xml**</value>
    

    此外,您可能会发现以下链接很有用: http://msdn.microsoft.com/en-us/library/ms178116.aspx

    【讨论】:

    • 您尝试过 Server.MapPath("~") 吗?提供尝试解析的代码可能会有所帮助
    • 加载xml文件的代码在DLL中,所以我不想在那里使用Server.MapPath。无论如何,我会按照你的建议发布 sn-p。
    猜你喜欢
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-21
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多