SQL onder Visual Studio 2010

Status
Niet open voor verdere reacties.

taalware

Gebruiker
Lid geworden
22 aug 2011
Berichten
15
Beste lezer,

Ik heb in visual studio 2010 visual basic silverlight application gemaakt.
Voor het vullen van mijn datagrids gebruik ik gegevens uit mijn SQL server 2008 R2.
Via een data; Link to SQL classes link ik de benodigde bestanden.
Via Silverlight-enabled WCF Service haal ik de gegevens uit de gekoppelde bestanden.

Locaal werkt dit prima!
http://localhost:52726/etc

Als ik het volgende ingeef dan wordt wel de site getoont maar niet de gegevens uit de sql-tabellen:
http://127.0.0.1:52726/etc

Ook worden de gegevens niet getoont als ik mijn internet ip adres ingeef?

Weet iemand waar dit aan kan liggen?

Als webserver heb ik IIS 7.5 geactiveerd onder windows 7 64bit.
Optie microsoft .net framework 3.5.1 heb ik niet geactiveerd.
 
Volgens mij moet dat een binding in de code, of iets dergelijks, zijn.

Localhost en 127.0.0.1 zijn namelijk identiek, afgezien van dns resolutie en IPv6. Ik zou het eerder in de code zoeken of je server configuratie dan in SQL.

wat gebeurt er als je dit gebruikt? :

http://[::1]:52726/etc
 
Hoi wampier,

Bedankt voor je snelle reactie!
Zelf moest ik gisteren helaas de hele dag weg maar vandaag ben ik de hele dag aanwezig.

Ik heb gedaan wat je vroeg en krijg de volgende melding:

Server Error in '/' Application.
--------------------------------------------------------------------------------

The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

Requested URL: /AdventureWorks_WebServer/AdventureWorksTestPage.html


--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.225

De url was:
http://[::1]:52726/AdventureWorks_WebServer/AdventureWorksTestPage.html
 
hmm, ok dat gaat niet helemaal goed ;) Ik probeerde een IP6 adres, maar blijkbaar gaat ".net" daar nog niet goed mee om.

Ik kan namelijk anders niet verklaren waarom localhost wel werkt en 127.0.0.1 niet. Probeer je die URL in de code of in internet explorer? Indien code moet je misschien quotes gebruiken om de link.
 
Ik heb net ontdekt dat er 2 verschillende situaties zijn.

Nadat ik internet explorer opgestart heb tik ik het volgende in:
http://127.0.0.1:52726/AdventureWorksTestPage.aspx
In dit geval wordt de webpagina getoont alleen zonder de content

Via visual studio start ik het programma op:
http://localhost:52726/AdventureWorksTestPage.aspx
In dit geval wordt de webpagina getoont en ook de content.
Verander ik nu localhost voor 127.0.0.1 dan krijg ik de volgende melding:

An error occurred while trying to make a request to URI 'http://localhost:52726/Service1.svc'. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. This error may also be caused by using internal types in the web service proxy without using the InternalsVisibleToAttribute attribute. Please see the inner exception for more details.

Ik denk ook dat het in de programmatuur zit en niets met sql te maken heeft.

Omdat je zo snel reageer blijf ik deze nu wachten op een reactie.
 
Ik heb net ontdekt dat er 2 verschillende situaties zijn.

Nadat ik internet explorer opgestart heb tik ik het volgende in:
http://127.0.0.1:52726/AdventureWorksTestPage.aspx
In dit geval wordt de webpagina getoont alleen zonder de content

Via visual studio start ik het programma op:
http://localhost:52726/AdventureWorksTestPage.aspx
In dit geval wordt de webpagina getoont en ook de content.
Verander ik nu localhost voor 127.0.0.1 dan krijg ik de volgende melding:

An error occurred while trying to make a request to URI 'http://localhost:52726/Service1.svc'. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. This error may also be caused by using internal types in the web service proxy without using the InternalsVisibleToAttribute attribute. Please see the inner exception for more details.

Ik denk ook dat het in de programmatuur zit en niets met sql te maken heeft.

Omdat je zo snel reageer blijf ik nu wachten op een reactie.
 
Altijd gevaarlijk, misschien ging ik wel net op vakantie :p

Waarschijnlijk gaat het fout in de interactie tussen server en script. Daar Silverlight interactief is en ook data krijgt van de gebruiker moet je goed opletten dat je beveiliging settings goed in orde zijn. Toch blijf ik het frappant vinden dat die niet om kan gaan met 127.0.0.1 en localhost.

indien je mijn eerdere link in IE gooit krijg je dan ook alleen de website zonder content? (alleen nieuwsgierigheid van mijn kant)

http://msdn.microsoft.com/en-us/library/cc197955(v=vs.95).aspx Komt blijkbaar vaker voor tijdens development
 
Met de hand intypen ;) Ok als je hier ook de content niet te zien krijgt is het dus inderdaad waarschijnlijk een DNS interpretatie van "localhost". Mogelijk heb je dus inderdaad te maken met problemen in crosssite scripting zoals aangegeven in die link. Ik heb helaas absoluuut geen ervaring met Silverlight, maar hopelijk kan iemand anders je hiermee verder helpen
 
Je moet de binding in je config file wel aanpassen naar de juiste danwel dezelfde url als van de site in IIS...
 
Beste Mark,

Bedankt voor je reactie.

In visual studio 2010 heb ik een test silverlight application gemaakt met de naam AdventureWorks en webproject name AdventureWorks_WebServer.

Zoals gezegd werkt de connectie met de SQL server goed bij het testen.

Nu kopieer ik alle gegevens vanuit de AdventureWorks_WebServer directory naar mijn homedirectory van IIS 7.5 \inetpub\wwwroot.

Als ik nu mijn default gateway ip-adres intik zie ik netjes de test staan maar zonder data uit de SQL-server.

Ik kreeg geen bestand ge-upload dus hieronder de inhoud van mijn config file:

<?xml version="1.0"?>
<configuration>

<connectionStrings>
<add name="pizzaConnectionString" connectionString="Data Source=TAALWARE\SQL;Initial Catalog=pizza;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<!-- -->
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<!-- -->
<system.web>
<authentication mode="Forms" />
<customErrors mode="Off"/>
</system.web>

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="AdventureWorks_WebServer.Service1.customBinding0">
<binaryMessageEncoding />
<httpTransport />
</binding>
</customBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="AdventureWorks_WebServer.Service1">
<endpoint address="" binding="customBinding" bindingConfiguration="AdventureWorks_WebServer.Service1.customBinding0"
contract="AdventureWorks_WebServer.Service1" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
</configuration>
 
Standaard draait de site onder een Application Pool Identity. Aangezien je gebruikt maakt van Integrated Security moet de Application Pool Identity wel rechten hebben om de database te benaderen.

Wat gebeurd er als je de connectionstring aanpast naar een gebruiker die 100% zeker toegang heeft tot de db? Bijv de sa user.
 
Code:
<add name="pizzaConnectionString" connectionString="Data Source=TAALWARE\SQL;Initial Catalog=pizza;Persist Security Info=True;User ID=sa;Password=jewachtwoord" providerName="System.Data.SqlClient" />
 
Beste Mark,

Bedankt voor je reactie.

Ik heb gedaan wat je voorstelde maar het heeft niet geholpen.

Ik heb nog vanalles geprobeerd maar niets werkt.

Ik denk dat het een combinatie is van windows 7 64 bit; framework 4; sql server 2008 R2 en geen of te weinig kennis van mij.


Als ik via de localhost het programma startte dan kreeg ik op de volgende foutmeldingen

programma : C:\inetpub\wwwroot\config.web
regel : <compilation debug="true" targetFramework="4.0" />
Parser-foutbericht: Attribuut targetFramework wordt niet herkend. Let op: attribuutnamen zijn hoofdlettergevoelig.

Als ik deze regel verwijderde kreeg ik een foutmelding op de volgende regel van bestand:

programma : C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config
regel :<add assembly="*" />
Parser-foutbericht: Kan bestand of assembly AdventureWorks_WebServer of een van de afhankelijkheden hiervan niet laden. Deze assembly is gebouwd door een runtime die nieuwer is dan de momenteel geladen runtime, en kan niet worden geladen.

Als ik deze regel verwijderde kreeg ik een foutmelding in de programmatuur.
Iets over cross-domain en soa ****!

Ik was me alleen aan het inleren in deze programmatuur wat locaal prima lukte maar via internet niet.
 
Die foutmelding maakt een hoop duidelijk. Je application pool draait onder .net 2.0. Je moet de application pool op .net 4.0 zetten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan