最近遇到这样一个问题:
有一个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);
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);
个人拙见,有错误的地方忘高手们指点。。。
本人不善于文字游戏,初次写,欢迎拍砖。谢谢