<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                背景: 在做一個Dicom Web Service, 其中WADO-RS中需要解析TransferSyntax, 然后就用到了fo-dicom中的DicomFile.ChangeTransferSyntax方法。 代碼類似: var df = DicomFile.Open(samplesDir + @"\User Submitted\overlays.dcm"); ? ? ? ? ? ? ? df = df.ChangeTransferSyntax(DicomTransferSyntax.JPEG2000Lossless); 問題: 就是上述代碼在Console(exe)中運行正常, 在WebApi服務中則拋出異常:No codec registered for tranfer syntax: 原因: 查看fo-dicom源碼后, 發現DicomCodec是在DicomTranscoder的靜態構造方法里用MEF初始化的。 代碼類似: static DicomTranscoder() ? ? ? { ? ? ? ? ? LoadCodecs(null, "Dicom.Native*.dll"); ? ? ? } public static void LoadCodecs(string path = null, string search = null) ? ? ? { ? ? ? ? ? if (path == null) ? ? ? ? ? { ? ? ? ? ? ? ? path = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath); ? ? ? ? ? } ? ? ? ? ? var log = LogManager.Default.GetLogger("Dicom.Imaging.Codec"); ? ? ? ? ? var catalog = ( search == null ) ? ? ? ? ? ? ? ? new DirectoryCatalog(path) ? ? ? ??? ? ? : new DirectoryCatalog(path, search); ? ? ? ? ? var container = new CompositionContainer(catalog); ? ? ? ? ? foreach (var lazy in container.GetExports<IDicomCodec>()) ? ? ? ? ? { ? ? ? ? ? ? ? var codec = lazy.Value; ? ? ? ? ? ? ? log.Debug("Codec: {0}", codec.TransferSyntax.UID.Name); ? ? ? ? ? ? ? _codecs[codec.TransferSyntax] = codec; ? ? ? ? ? } ? ? ? } 當為Console時,上述path就是exe所在的路徑,因此MEF的機制可以找到Dicom.Native.DLL,然后就可以取到Codecs。 當為AspNet WebApi時,上述path是C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\e298f90d\bf8a423a \assembly\dl3\2196513d\b06fccd3_417bd001,每個DLL都在獨立的路徑下, 導致在WebApi的dll的路徑找不到Dicom.Native.DLL,因此就取不到Codecs,從而拋出異常No codec registered for tranfer syntax: 解決辦法: 在WebApiConfig.Register方法中添加如下代碼: var path = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath); ? ? ? ? ? Dicom.Imaging.Codec.DicomTranscoder.LoadCodecs(path, "Dicom.Native*.dll");
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看