我已经构建了一个WCF服务,并希望在IIS上托管它。我想要的一个功能是以编程方式在WCF webhost根目录中创建一个子文件夹,以保留一些json文件。
我已在我的本地开发IIS Express上测试它并且它工作正常,这并不奇怪我拥有所有必要的权限。
现在,我想在我的公共领域发布它。为此,我在Plesk上创建了一个子域,在httpdocs中创建了一个子文件夹。我已经将web.config文件和我的开发机器中的Bin文件夹复制到我域上的这个文件夹中。但是,当我在浏览器上输入svc url时,我得到一个访问被拒绝的异常(该文件夹是在我的服务中注入的依赖项中创建的,这就是我此时得到异常的原因。)
>应用程序中的服务器错误。访问路径 'C:\ Inetpub \ vhosts \««我的域名»»\ httpdocs \ VersioningService \ Repository'是 拒绝。
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:System.UnauthorizedAccessException:访问 路径 'C:\ Inetpub \ vhosts \««我的域名»»\ httpdocs \ VersioningService \ Repository'是 拒绝。
下面是我的web.config:
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<customErrors mode="Off"/>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true">
<serviceActivations>
<add factory="VersioningService.Services.ManualMajorMinorVersioningHostFactory"
relativeAddress="~/ManualMajorMinorVersioning.svc"
service="VersioningService.Services.ManualMajorMinorVersioning" />
</serviceActivations>
</serviceHostingEnvironment>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
这是我用来获取当前程序集路径的内容:
var assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
注意:如果我使用ProgramData文件夹,我没有异常,但我希望在WCF文件夹中有一个子文件夹。
这显然是一个权限问题。我是否需要在web.config中添加其他内容?
我是否需要让我的主机提供商为某些用户提供一些额外的权限?