拒绝访问 - Windows服务Web API控制器类

Joh*_*ohn 6 c# asp.net-web-api postman

作为https://stackoverflow.com/questions/48107646/how-to-test-apicontroller...... 的延续......简而言之....

我在VS 2013中处理现有的Windows服务项目.

我添加了一个Web API Controller类......我称之为SynchroniseFromAwsServiceController

我试图从AWS lambda调用中调用它,但它告诉我我没有访问权限.所以我需要在本地测试它,看它是否正在尝试和诊断问题.

     namespace Workflow
    {

        public class SynchroniseFromAwsServiceController: ApiController
        {
            //// POST api/<controller>
            [HttpPost]
            public string SapCall([FromBody]string xmlFile)
            {
                string responseMsg = "Failed Import User";

                if (!IsNewestVersionOfXMLFile(xmlFile))
                {
                    responseMsg = "Not latest version of file, update not performed";
                }
                else
                {
                    Business.PersonnelReplicate personnelReplicate = BusinessLogic.SynchronisePersonnel.BuildFromDataContractXml<Business.PersonnelReplicate>(xmlFile);
                    bool result = Service.Personnel.SynchroniseCache(personnelReplicate);

                    if (result)
                    {
                        responseMsg = "Success Import Sap Cache User";
                    }
                }

                return "{\"response\" : \" " + responseMsg + " \" , \"isNewActiveDirectoryUser\" : \" false \"}";
            }
    }
    }
Run Code Online (Sandbox Code Playgroud)

我用PostMan测试这个.我在VS中运行应用程序并http://127.0.0.1/SynchronisePersonnelXmlFromAwsServiceController/SapEaiCall在POSTMAN ui中输入POST字段...它返回以下内容:

'/'应用程序中的服务器错误.

无法开始监控对"D:\ Development\Trunk\WebAppsMVC\Icon\Icon\global.asax"的更改,因为访问被拒绝.异常详细信息:System.Web.HttpException:无法开始监视对"D:\ Development\Trunk\WebAppsMVC\Icon\Icon\global.asax"的更改,因为访问被拒绝.

堆栈跟踪:

[HttpException (0x80070005): Failed to start monitoring changes to &#39;D:\Development\Trunk\WebAppsMVC\Icon\Icon\global.asax&#39;
Run Code Online (Sandbox Code Playgroud)

因为访问被拒绝.] System.Web.DirectoryMonitor.AddFileMonitor(String file)+9929663 System.Web.DirectoryMonitor.StartMonitoringFileWithAssert(String file,FileChangeEventHandler callback,String alias)+89 System.Web.FileChangesMonitor.StartMonitoringFile(String alias,FileChangeEventHandler callback)+331 System.Web.HttpApplicationFactory.SetupChangesMonitor()+122 System.Web.HttpApplicationFactory.Init()+ 161 System.Web.HttpApplicationFactory.EnsureInited()+80 System.Web.HttpApplicationFactory.SetupFileChangeNotifications()+71 System. Web.Compilation.BuildManager.CompileGlobalAsax()+ 57 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()+260

[HttpException (0x80004005): Failed to start monitoring changes to &#39;D:\Development\Trunk\WebAppsMVC\Icon\Icon\global.asax&#39;
Run Code Online (Sandbox Code Playgroud)

因为访问被拒绝.] System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()+62 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()+ 435 System.Web.Compilation.BuildManager.CallAppInitializeMethod()+33 System.Web.Hosting .HostingEnvironment.Initialize(ApplicationManager appManager,IApplicationHost appHost,IConfigMapPathFactory configMapPathFactory,HostingEnvironmentParameters hostingParameters,PolicyLevel policyLevel,Exception appDomainCreationException)+563

[HttpException (0x80004005): Failed to start monitoring changes to &#39;D:\Development\Trunk\WebAppsMVC\Icon\Icon\global.asax&#39;
Run Code Online (Sandbox Code Playgroud)

因为访问被拒绝.] System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+10085904 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+95 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+254

[HttpException]: Failed to start monitoring changes to &#39;D:\Development\Trunk\WebAppsMVC\Icon\Icon\global.asax&#39;
Run Code Online (Sandbox Code Playgroud)

因为访问被拒绝.System.Web处理System.Web.FileChangesMonitor.StartMonitoringFile(String别名,FileChangeEventHandler回调)的System.Web.DirectoryMonitor.StartMonitoringFileWithAssert(String file,FileChangeEventHandler回调,String别名)上的System.Web.DirectoryMonitor.AddFileMonitor(String file). System.Web.HttpApplicationFactory.EnsureInited()中的System.Web.HttpApplicationFactory.EnsureInited()处的System.Web.HttpApplicationFactory.SetupFileChangeNotifications()位于System.Web.Compilation.BuildManager.CompileGlobalAsax()的System.Web上的HttpApplicationFactory.SetupChangesMonitor(). Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()[HttpException]:无法开始监视对"D:\ Development\Trunk\WebAppsMVC\Icon\Icon\global.asax"的更改,因为访问被拒绝.System.Web.Compilation.BuildManager.CallLevelFilesCompiled()的System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()位于System.Web.Hosting.Hosting.Initialize的System.Web.Compilation.BuildManager.CallAppInitializeMethod()处于System.Web.Compilation.BuildManager.ReportTopLevelCompilationException(),ApplicationManager appManager, IApplicationHost appHost,IConfigMapPathFactory configMapPathFactory,HostingEnvironmentParameters hostingParameters,PolicyLevel policyLevel,Exception appDomainCreationException)[HttpException]:无法开始监视对'D:\ Development\Trunk\WebAppsMVC\Icon\Icon\global.asax'的更改,因为访问被拒绝.位于System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)的System.Web.HttpRuntime.FirstRequestInit(HttpContext context)处于System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)

有没有人有任何想法或可以指出我正确的方向,为什么我要归还 <title>Failed to start monitoring changes to 'D:\Development\Trunk\WebAppsMVC\Icon\Icon\global.asax' because access is denied.</title>

UPDATE

谢谢 https://stackoverflow.com/questions/4889297/failed-to-start-monitoring-changes-on-global-asax-net-3-5-web-service-using-imp

我已从该文件夹中删除了只读,并添加了Authenticated Users.现在,当我运行时,它给了我一个不同的错误,但仍然说访问被拒绝....我使用正确的URL? http://127.0.0.1/SynchronisePersonnelXmlFromAwsServiceController/SapEaiCall

无论如何,新的错误是:

'/'应用程序中的服务器错误.访问被拒绝.描述:访问提供此请求所需的资源时发生错误.可能未配置服务器以访问请求的URL.

错误消息401.2未授权:由于服务器配置登录失败.

验证您是否有权根据您提供的凭据和Web服务器上启用的身份验证方法查看此目录或页面.请与Web服务器的管理员联系以获取其他帮助.

any help would be much appreciated thank you
Run Code Online (Sandbox Code Playgroud)

更新 感谢George Vovos的回复,我已经将http移到了方法之上,并将签名更改为包含控制器.

在邮递员中,我还包括了授权的基本价值标签.

现在,当我在本地运行VS应用程序并尝试通过post man连接时 http://localhost/WebServices.Workflow/SynchroniseFromAwsServiceController/SapCall

(WebServices.Workflow是应用程序名称)

我收到以下消息:

Could not get any response
There was an error connecting to http://localhost/WebServices.Workflow/SynchroniseFromAwsServiceController/SapEaiCall
Why this might have happened:
The server couldn't send a response:
Ensure that the backend is working properly
Self-signed SSL certificates are being blocked:
Fix this by turning off 'SSL certificate verification' in Settings > General
Proxy configured incorrectly
Ensure that proxy is configured correctly in Settings > Proxy
Request timeout:
Change request timeout in Settings > General
Run Code Online (Sandbox Code Playgroud)

我试过关掉SSL ......其他任何想法?

新的更新 继一篇文章之后,我发现我重新启动了PostMan并再次运行POST,现在消息正在返回,There is a duplicate 'exceptionless' section defined这就是我尝试从visual studio运行应用程序.所以至少它朝着正确的方向迈出了一步(我想)......我已经写了一篇关于这个问题的新Q ...

配置文件标记为重复的Exceptionless包

注:如果有人能够帮我回答这个延续Q,我将授予他们这一问赏金

谢谢你的任何回复

Tay*_*yab 5

我最近在我的机器上部署ASP.Net Web API时也遇到了同样的错误.我错的是我没有启用它所需的应用程序开发功能.您还需要检查是否在本地计算机上启用了以下功能:在此输入图像描述

您可以导航到ControlPanel - >程序 - >程序和功能 - >打开或关闭Windows功能,如果启用了这些功能,则可以进行chekc.

希望这可以帮助.


Jer*_*son 1

您需要将 Windows 集成身份验证添加到 IIS。检查是否安装:

开始 > 运行 >inetmgr 单击身份验证

在此输入图像描述

如果缺少 Windows Integrated,您将需要按照以下步骤安装它:

在客户端操作系统上:
开始 > 运行 >appwiz.cpl
单击“打开或关闭 Windows 功能”
向下滚动到 Internet 信息服务并将其展开
展开万维网服务
展开安全性
选中您需要的身份验证方法(Windows 集成)

在服务器操作系统上:
转到服务器管理器(开始 -> 管理工具 -> 服务器管理器)
展开角色和 Web 服务器 (IIS)
向下滚动到角色服务,然后单击右侧的添加角色服务
启用以下所需的所有类型保安科