Dopo aver pubblicato un'applicazione silverlight in host mi si
presenta il seguente problema.
nonostante l'endpoint impostato come segue:
<endpoint address="http://www.<sito>.com/AdminNewsService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_AdminNewsService"
contract="AdminNewsSVC.AdminNewsService"
name="BasicHttpBinding_AdminNewsService" />
all'esecuzione è impossibile accedere al file "AdminNewsService.svc"
l'errore è il seguente:
HTTP 404. La risorsa che si sta cercando (o una delle sue dipendenze)
potrebbe essere stata rimossa, rinominata o non essere temporaneamente
disponibile. Verificare che l'URL riportato di seguito sia stato
digitato correttamente.
ho impostato il MIME per il file .xap correttamente e verficato la
presenza della dll (isapi) per il framework 2.0 per l'esecuzione di
webservice.
Inoltre, se modifico l'endpoint per accedere localmente sul server in
host l'applicazione (eseguita localmente) funziona e il file .svc
viene caricato.
Inoltre, modificando l'estensione da .svc a .txt e chiamando il file
con
http://www.<sito>.com/AdminNewsService.txt vedo chiaramente il codice
XML del file quindi il file è localizzabile.
Non capisco se è un problema di endpoint, DNS o IIS.
grazie 1000
Andrea.
Il mex enpoint ᅵ definito? hi provato a rimuovere address="..."?
Non ho mai avuto problemi usando la configurazione di default tipo:
<service
behaviorConfiguration="SilverlightApplication27.Web.Service1Behavior"
name="SilverlightApplication27.Web.Service1">
<endpoint address="" binding="customBinding"
bindingConfiguration="customBinding0"
contract="SilverlightApplication27.Web.Service1" />
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
--
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET - http://www.ugidotnet.org
Weblog: http://blogs.ugidotnet.org/corrado/
sul web.config è definito sia il mex sia l'address="" proprio come hai
segnalato, ma il problema credo sia sul
"ServiceReferences.ClientConfig" quando devo definire l'endpoint... e
comunque si verifica solo quando chiamo l'applicazione dall'esterno
tramite nome di dominio.
questo è il ServiceReference.ClientConfig:
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_AdminNewsService"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://www.<nomedominio>.com/
AdminNewsService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_AdminNewsService"
contract="AdminNewsSVC.AdminNewsService"
name="BasicHttpBinding_AdminNewsService" />
</client>
</system.serviceModel>
</configuration>
ovviamente se al posto di "http://www.<nomedominio>.com/
AdminNewsService.svc" scrivo "http://localhost/AdminNewsService.svc" e
provo ad accedere localmente sul server il servizio risponde
correttamente.
HO RISOLTO. :-) :-)
Ho impostato sul web.config la seguente configurazione:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true">
<baseAddressPrefixFilters>
<add prefix="http://www.<nomedominio>.com"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
Precedentemente avevo creato una classe che eredita da
ServiceHostFactory per farmi restutire un solo indirizzo, ma con la
configurazione del web.config in questo modo ho potuto togliere il
riferimento del "Factory" relativo quella classe sul file .svc.
Quindi senza modificare l'endpoint su ServiceReference.ClientConfig
l'applicazione funziona
Grazie 1000.
Andrea.