最近遇到这样一个问题:

    有一个WCF服务,在服务中需要访问网络映射盘.把WCF服务部署到IIS中不能访问到网络路径。

   

 bool exist = File.Exists(fileName);//fileName为网络路径

总是出现“访问非法内存....”异常

但是同样的服务在调式环境下 可以正确访问到。

 

  最后分析是因为IIS访问网络盘权限不够,然后在IIS中把可能导致该问题的权限全部都加上,结果还是不行。原因是在IIS中配置的权限是用户访问文件目录(虚拟目录或网站)的权限而非IIS访问其他文件目录的权限。

   上述方法不行,进而有了下面的方法:

    Winform或控制台程序可以正常访问网络路径,就产生了把wcf服务寄宿在winform或控制台程序中,这次没让我失望。

   

代码
1             _baseUri = new Uri(url);
2             _servicehost = new ServiceHost( typeof( GetKeyframe ), _baseUri );
3             _servicehost.AddServiceEndpoint( typeof( IGetKeyframe ), new BasicHttpBinding(), string.Empty );
4             var behavior = new ServiceMetadataBehavior
5             {
6                 HttpGetEnabled = true,
7                 HttpGetUrl = _baseUri
8             };
9             _servicehost.Description.Behaviors.Add(behavior);

    个人拙见,有错误的地方忘高手们指点。。。

    本人不善于文字游戏,初次写,欢迎拍砖。谢谢

    

posted on 2010-03-31 21:07  Memory  阅读(697)  评论(0编辑  收藏  举报