Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IIS 7如何从Bin文件夹加载程序集_C#_.net_Asp.net_Webservice Client_.net Assembly - Fatal编程技术网

C# IIS 7如何从Bin文件夹加载程序集

C# IIS 7如何从Bin文件夹加载程序集,c#,.net,asp.net,webservice-client,.net-assembly,C#,.net,Asp.net,Webservice Client,.net Assembly,在.NET解决方案中,我使用自定义类进行翻译。 翻译框架的主要思想 将带有翻译的文件放置在部件附近的文件夹中 当它从windows窗体应用程序调用时,所有这些都可以正常工作。 但当我从web服务调用它时,它不起作用 我通过VisualStudio2010和bult在调试器中调试web服务。 我看到ASP.NET开发中的内置从 C:\Windows\Microsoft.NET\Framework\v4.0.30319\临时ASP.NET文件\ 而且找不到我的翻译文件夹 因此,请建议在这种情况下该怎

在.NET解决方案中,我使用自定义类进行翻译。 翻译框架的主要思想 将带有翻译的文件放置在部件附近的文件夹中

当它从windows窗体应用程序调用时,所有这些都可以正常工作。 但当我从web服务调用它时,它不起作用

我通过VisualStudio2010和bult在调试器中调试web服务。 我看到ASP.NET开发中的内置从 C:\Windows\Microsoft.NET\Framework\v4.0.30319\临时ASP.NET文件\

而且找不到我的翻译文件夹

因此,请建议在这种情况下该怎么做

我在IIS7下测试过它也不起作用

如何加载程序集的示例代码:

if (languageSettings == null)                   
{
   TraceIt(assembly.Location);
   string strPath = Path.Combine(Path.GetDirectoryName(assembly.Location), "Language.config");
   TraceIt(strPath);
   languageSettings = new LanguageSettings(strPath);
   if (!languageSettings.LoadSettings())
   {
      languageSettings.CurrentLanguage = DefaultLocale;
      languageSettings.SaveSettings();
   }
}

在web应用程序中,程序集将位于
bin
文件夹中。假设您的配置文件位于应用程序的根目录上一级,您可以使用
Server.MapPath
获取其路径,如下所示(您需要参考System.Web)


在web应用程序中,程序集将位于
bin
文件夹中。假设您的配置文件位于应用程序的根目录上一级,您可以使用
Server.MapPath
获取其路径,如下所示(您需要参考System.Web)


在web环境中,通常在web.config中设置指向语言数据文件夹的绝对路径的键,而不是依赖于执行文件夹中的查找:

<appSettings>
  <add key="Languages" value="D:\Data\Languages" />
</appSettings>

在web环境中,通常在web.config中设置指向语言数据文件夹的绝对路径的键,而不是依赖于执行文件夹中的查找:

<appSettings>
  <add key="Languages" value="D:\Data\Languages" />
</appSettings>

您可以尝试从类型中获取位置。例如:

string strPath = 
   Path.Combine(
      Path.GetDirectoryName(typeof(LanguageSettings).Assembly.Location),
      "Language.config");

您可以尝试从类型中获取位置。例如:

string strPath = 
   Path.Combine(
      Path.GetDirectoryName(typeof(LanguageSettings).Assembly.Location),
      "Language.config");

看看John Sibly给出的解决方案:


我认为这更符合您的要求;)由于它在两种情况下都能工作(win和web)

请看一下John Sibly给出的解决方案:


我认为这更符合您的要求;)由于它在两种情况下都能工作(win和web)

这是可能的,但相同的代码必须在IIS和windows窗体以及windows服务下工作,如何确定代码在IIS下工作?这是可能的,但相同的代码必须在IIS和windows窗体以及windows服务下工作,如何确定代码在IIS下工作?可以,但我也必须在windows服务下运行相同的代码。。所以问题存在:如何确定代码是从iis调用的?检查
HttpContext.Current
是否为
null
,如果是,请使用现有代码。如果没有,请运行这个。这是可以的,但我也必须在windows服务下运行相同的代码。。所以问题存在:如何确定代码是从iis调用的?检查
HttpContext.Current
是否为
null
,如果是,请使用现有代码。如果没有,请运行此。