我在 IIS 上运行 ServiceStack 应用程序。我的常规服务运行良好,没有出现任何权限问题。
我的新项目涉及提供生成的 PDF。我授予 IIS_IUSRS 对我的应用程序目录下的 Temp 目录的读/写权限。我还允许非 SSL 连接到此目录。当我浏览到 ServiceStack 应该自动提供的文件时(例如http://ryublablah.com/Temp/201310171723337631.pdf)我得到了这个:
Forbidden
Request.HttpMethod: GET
Request.PathInfo:
Request.QueryString:
Request.RawUrl: /ryublalblah/Temp/201310171723337631.pdf
App.IsIntegratedPipeline: True
App.WebHostPhysicalPath: C:\inetpub\ryublalblah
App.WebHostRootFileNames: [global.asax,global.asax.cs,web.config,bin,temp]
现在这看起来不像是 ServiceStack 错误消息,更像是 IIS,但我不确定如何找到问题的根源。授权设置为全部允许。
答案1
我在使用 ServiceStack 3.9.70 时也遇到了同样的问题。我创建了一个托管在 IIS 应用程序根目录下的新项目。结果发现问题是由配置中的以下行引起AppHost
的
config.ServiceStackHandlerFactoryPath = ""; // Results in forbidden
我从另一个 ServiceStack 托管在子文件夹中的项目中复制了它:
config.ServiceStackHandlerFactoryPath = "api"; // subfolder: WORKS
config.ServiceStackHandlerFactoryPath = null; // root: WORKS