Ich probiere mal mein Vorgehen zu erklären, vll liegt ja schon da der Fehler.
(VS Studio starten)
Neues Cloud Projekt erstellen
WebRole hinzufügen
Rechtsklick auf Webrole -> Neues Element hinzufügen -> Silverlight Service
Rechtsklick auf Services -> In Browser anzeigen (Startet Services)
Rechtsklick auf Projekt -> Neues Projekt hinzufügen -> Silverlight Anwendung
Rechtsklick auf Silverlight-Projekt -> Dienstverweis? hinzufügen (Service Auswählen)
Entwas Code schreiben um auf Service zuzugreifen
clientaccesspolicy.xml aus Onlinevorlage runterladen und anpassen
crossdomain.xml in Webrole root hinzufügen
Debuggen
Fehler
hast du die clientaccesspolicy.xml auch auf Serverseite des WCF-Services hinzugefügt? Dort gehört diese nämlich hin.
Wie gesagt habe ich die clientaccesspolicy.xml lediglich in den root Ordner der WebRole eingefügt.
Zitat
wie läuft denn dein WCF Service bei dir? Als Windows-Dienst?
Der Service läuft im IIS7, soweit ich weiss. Ich lasse mir die Services immer über "Rechtsklick->Im Browser anzeigen" anzeigen. Da werden sie automatisch gestartet.
@wettmasta
Dein Beispiel verstehe ich nicht ganz. Wo wird denn die CrossDomainService-Klasse verwendet?
Danke für die Antwort aber auf den Artikel bin ich bei meiner Rechereche bestimmt schon 4 mal gestoßen.
Habe sowohl die clientaccesspolicy.xml als auch die crossdomain.xml in die root-Ordner und (aus Verzweiflung) auch in so ziemlich alle anderen Ordner eingefügt. Beide xml sind auch über den Webbrowser abrufbar. Also "localhost:port/clientaccesspolicy.xml"
Ich habe auch mal Firebug nebenher laufen lassen. Da wird mir nirgends angezeigt, dass er probiert auf die clientaccesspolicy.xml zuzugreifen. Ist das normal?
Muss man das vll erst in irgend einer Einstellung festlegen?
ich habe ein Azure-Cloud-Projekt, dass eine Webrole hat, die einen WCF-Dienst bereit stellt. Auf diesen Dienst soll eine Silverlight Anwendung zugreifen.
Das Problem ist, dass ich selbst beim lokalen Debuggen folgende Fehlermeldung bekomme:
Zitat
Fehler beim Senden einer Anforderung an den URI "http://localhost:87/Service1.svc". Ursache ist möglicherweise, dass ohne die entsprechende domänenübergreifende Richtlinie oder mit einer nicht für SOAP-Dienste geeigneten Richtlinie domänenübergreifend auf einen Dienst zugegriffen wurde. Möglicherweise müssen Sie sich an den Besitzer des Diensts wenden, damit eine domänenübergreifende Richtliniendatei veröffentlicht und das Senden von sich auf SOAP beziehenden HTTP-Headern zugelassen wird. Dieser Fehler kann auch durch Verwendung von internen Typen im Webdienstproxy ohne das InternalsVisibleToAttribute-Attribut verursacht werden. Weitere Details finden Sie in der inneren Ausnahme.
Im Web habe ich viele Posts und Blogs zu diesem Thema gefunden. Allerdings war es da immer so, dass die Anwendung lokal funktioniert hat und erst beim Hochladen auf den Server nicht mehr funktionierte, oder einfach die "clientaccesspolicy.xml" hinzugefügt werden musste.
Die "clientaccesspolicy.xml" habe ich aber bereits hinzugefügt und nichts hat sich verbessert.
Bin über alle Ansätze dankbar.
Gruß
Puppetmaster
Zum System:
Windows 7 Enterprise
SQL-Server Express
IIS 7
VS 2010
Silverlight 4
.Net 4.0
jetzt suche ich einen miniventilator mit led's und einer schnittstelle zum pc. so, dass ich ihn vom pc aus programmieren kann und er auch vom computer mit strom versorgt wird.
auf so was in der art wird es leider hinauslaufen, befürchte ich.
das problem ist, dass die globalen daten etwas umfangreicher und komplizierter sind, als dass man sie einfach in einen hashtable schreiben könnte.
wenn überhaupt würde ich einfach die "Global" klasse übergeben.
bloß leider wäre sie damit nicht mehr statisch und ich müsste einen großteil im projekt umschreiben. nicht nur, dass das einige stunden arbeit in anspruch nehmen würde, es würde (wahrscheinlich) die performance geringfügig verschlechtern und den code verkomplizieren.
sachen, die ich gerne vermeiden würde, wenn es geht.
@ChristianR "Ein anderes Stichwort sind ExtensionMethods (allerdings kannst du damit nur neue Methoden zu einer Klassen hinzufügen die es noch nicht gibt, sonst gewinnt die Klassenmethode)"
Soweit ich weiss, gilt das auch für partial Class.
Jedenfalls sind diese nicht dafür da vorhandene Methoden zu überschreiben, sondern um den quellcode übersichtlich zu halten.
ich habe ein programm, dass auf plugins basiert.
da die plugins und der host die gleichen daten benötigen wollte ich eine klasse mit statischen membern machen, die diese daten hält. die klasse heißt "Global".
statisch damit ich überall in meinem projekt über Global.xxx auf die daten zugreifen kann.
leider erstellt sich jedes plugin/host eine eigene instanz der Global klasse.
wie bekomme ich es hin, dass die klasse Global wirklich nur einmal instanziert wird und alle andern klassen auf diese eine instanz zugreifen?
eine nicht statische lösung mittels übergabe wäre ziemlich bescheiden zu programmieren.
was muss man denn installiert haben um die microsoft.mshtml.dll zu besitzen?
ich musste sie mir extra runterladen, um das programm kompilieren zu können.
ansonsten isses noch recht buggy (is bei mir gleich mal abgeschmiert bei ner 0 länge).
habs jetzt aber nicht großartig getestet. liegt vll daran, dass ich gerade net kapier, wie das teil überhaupt funktionieren soll ^^
in der excel datei sind daten, die ich lesen will, um damit meine datenbank zu füllen. später ist auch ein excel export (also ein erstellen und beschreiben von excel files) vorgesehen.
Zitat
Wenn du über PIA auf eine Excel Datei zugreifen möchtest dann nur wenn davor Office auch installiert wurde. Sonst funktioniert PIA nicht.
dann sollte ich wohl die lösung per PIA ersteinmal hinten anstellen. denn ich will dem kunden kein office aufzwingen. noch dazu eine von mir vorgegebene version, da es ja für jedes office ein eigenes PIA gibt.
leider kenne ich nur die wege per COM und PIA mit excel zu kommunizieren.gibt es auch einen weg, der mich unabhängig von ms office macht?
imho ist das hier erstmal ein logisches problem.
wenn du einen preis bei BasisGebäude implementierst, gibst du damit an, dass ALLE gebäude einen preis/preisniveau haben, was bei dir jedoch nicht der fall ist.
wenn ich es richtig verstanden habe, sollte dein modell in etwa so aussehen:
es gibt also eine abstrakte klasse BasisGebäude mit allen eigenschaften, die ein gebäude hat (also kein preisniveau) und eine abstrakte klasse GebäudeMitPreisNiveau, die von BasisGebäude erbt.
dann kannst du die restlichen gebäude, je nach typ, von den entsprechenden gebäudeklassen erben lassen.
a hui hau
puppet
EDIT:
Zitat
ich habe einen Codebaustein den ich sehr häufig in Classen wiederverwenden werde. Dafür sind ja interfaces gedacht
das sehe ich nicht so. ein interface soll eine definierte schnittstelle zwischen zwei (oder mehreren) klassen darstellen. was du meinst sind abstrakte klassen.
zu A) schau dir mal m zu n verknüfungen von tabellen an.
zu B) eine einfache SQL abfrage. über den suchalgorythmus darfst du dir dann selber ein paar gedanken machen.
na dann will ich die diskussion mal nicht neu anfachen. obwohl ich sagen muss, dass mich die argumente nicht überzeugt haben.
aber da der thread eh nicht geclosed wurde, ist es für hier auch egal.
zurück zum eigentlichen thema. das GetType() besser ist finde ich auch.
nur da man ja in der regel die klasse um die methode selbst schreibt wird man auch wissen, ob man ToString() überschrieben hat.
daher müsste ToString() fast immer auch funktionieren.
geht mir jetzt eigentlich nur drum, ob meine denkweise so richtig ist.
das GetType() besser ist, ist unstreitbar.
was habt ihr denn gegen das doppelposten, so lange es in verschiedenen foren ist?
ich finde es sogar gut. denn dadurch wachsen beide foren und mehreren leuten wird dadurch geholfen.
zum problem.
Pimsti wird es wahrscheinlich nicht mehr interessieren aber vll andere. mit this.ToString() bekommt man namespace und klasse ausgegeben.
a hui hau
puppet
ach so. GetType().FullName geht natürlich auch. aber das wurde ja bereits ausführlich im andern forum erklärt ;-)