Wie kann man das 'Zugriff Verweigert' - Fehler mit ein .Net WCF-Dienst läuft auf Amazon EC2?
Ich bin neu auf dem AWC/EC2-Umgebung und erstellt eine .Net WCF service auf meiner EC2-instance von Windows Server und IIS.
Navigieren zu http://www.websiteservice.com/MyWebsiteFeederService.svc?wsdl bringt der WSDL.
Nun, in www.mywebsite.com,, das ist auch das sitzen auf der gleichen Maschine, die ich verbraucht haben den web-service. Leider immer wenn ich versuche, Zugriff auf den service über die Website, ich weiterhin die Meldung "Zugriff Verweigert" Fehlermeldung:
Exception Details:
System.ServiceModel.Sicherheit.SecurityAccessDeniedException: Zugriff
verweigert.
Ich glaube nicht, dass das im Zusammenhang mit der AWS-S3-Fehler - Zugriff Verweigert Fehler, so wie ich bin nicht mit Eimern.
In der Website.config, ich drehte mich auf die trace-listener und warf einen Blick auf das Service Trace Viewer.
Den Daten scheint nicht sinnvoll zu sein, da dies ist, was ich bekomme:
[TraceRecord] Schweregrad Warnung
TraceIdentifier http://msdn.microsoft.com/en-US/library/System.ServiceModel.Diagnostics.ThrowingException.aspx
Beschreibung eine Ausnahme zu Werfen.
AppDomain /LM/W3SVC/4/ROOT-2-129966419874659765
Hier ist die vollständige XML-Warnung Ebene:
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>131075</EventID>
<Type>3</Type>
<SubType Name="Warning">0</SubType>
<Level>4</Level>
<TimeCreated SystemTime="2012-11-06T02:19:47.8029428Z" />
<Source Name="System.ServiceModel" />
<Correlation ActivityID="{b6efab70-63ad-4bdd-85c6-5c49a907c210}" />
<Execution ProcessName="w3wp" ProcessID="3472" ThreadID="1" />
<Channel />
<Computer>AMAZONA-xxxxxFFR</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Warning">
<TraceIdentifier>http://msdn.microsoft.com/en-US/library/System.ServiceModel.Diagnostics.ThrowingException.aspx</TraceIdentifier>
<Description>Throwing an exception.</Description>
<AppDomain>/LM/W3SVC/4/ROOT-2-129966419874659765</AppDomain>
<Exception>
<ExceptionType>System.ServiceModel.Security.SecurityAccessDeniedException, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType>
<Message>Access is denied.</Message>
<StackTrace>
at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at MyWebsiteFeederService.IFeederService.GetWebsiteConfiguration(String websiteGuid, String websitePW)
at MyWebsiteFeederService.FeederServiceClient.GetWebsiteConfiguration(String websiteGuid, String websitePW)
at Inquiro.Models4.ModelsBaseClass.GetWebsiteConfiguration(String websiteGuid, String websitePW)
at Inquiro.Websites.MvcApplication.LoadWebsiteConfiguration()
at Inquiro.Websites.MvcApplication.Application_Start()
at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at System.Web.HttpApplication.InvokeMethodWithAssert(MethodInfo method, Int32 paramCount, Object eventSource, EventArgs eventArgs)
at System.Web.HttpApplication.ProcessSpecialRequest(HttpContext context, MethodInfo method, Int32 paramCount, Object eventSource, EventArgs eventArgs, HttpSessionState session)
at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
</StackTrace>
<ExceptionString>System.ServiceModel.Security.SecurityAccessDeniedException: Access is denied.</ExceptionString>
</Exception>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
Ich habe genau die gleichen Dienst auf einem anderen, nicht-Amazon-server und es funktioniert Prima. Ich erinnere mich nicht, Einsetzung eines besonderen Berechtigungen, oder "ausführen als [Benutzername]" - keine zusätzliche Benutzer-setup im IIS-Manager-Berechtigungen.
Habe ich auch bestätigt von der Eingabeaufforderung auf dem server, mithilfe von sqlcmd, dass ich eine Verbindung herstellen können, um die RDS-Datenbank-server.
Ich bin im Grunde im Kreis, an dieser Stelle und würde schätzen etwas Hilfe.
Dank.
InformationsquelleAutor ElHaix | 2012-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Fehler selbst "Zugriff verweigert." ist nicht sehr hilfreich. Weder ist die debug-Informationen.
Letztlich, in diesem Fall, das Problem war, dass die execute-Berechtigungen erteilt werden, die die Benutzer-id ausgeführt, dass die gespeicherten Prozeduren aufgerufen, aus dem WCF-Dienst.
Zum ändern von Benutzer-Berechtigungsebenen, verwenden Sie die folgenden Schritte. Klicken Sie auf Start und dann auf Ausführen, und geben Sie compmgmt.msc. Der rechten Maustaste auf Dienste und Anwendungen/WMI-Steuerelemente und wählen Sie Eigenschaften. Wählen Sie die Registerkarte "Sicherheit", und navigieren Sie zum Root/ServiceModel-namespace. Klicken Sie auf die Schaltfläche "Sicherheit". Wählen Sie die entsprechende Gruppe oder den Benutzer, für den Sie den Zugriff Steuern möchten, und verwenden Sie die Allow-oder Deny-Kontrollkästchen, um Berechtigungen konfigurieren.
InformationsquelleAutor ElHaix