这可能很简单,但请耐心等待。
当我将带有 WCF 的 Silverlight 5 应用程序部署到 IIS 时,使用简单的复制和粘贴技术,我可以完美地浏览网站,但是当我尝试通过像 192.168.1.3:8099 这样的 ipaddress 访问它时,每个服务调用都会返回错误,例如作为这个:
An exception occurred during the operation, making the result invalid. Check InnerException for exception details.
at .....
at <MyNamespace>.OnGetSomethingFromDataBaseCompleted(Object state)
我可以成功地定位来自其他机器的 WCF 服务(192.168.1.3:8099/SomeService.svc)。我编写了测试控制台应用程序来调用(并关闭)该服务,它正确地从远程 DBServer 获取了一些数据。然而在浏览器中什么都没有。
当导航到 192.168.1.3:8099 时,A 应该从浏览器添加回 Fiddler 不会注册此调用,但它会从 localhost:8099 注册。
你能帮我吗?
我认为对于比我更有部署经验的人来说,这是一个简单的问题,但如果您认为应该这样做,请继续阅读。
所以你正在阅读=>(棱镜)。
我有一个 Silverlight 应用程序,它连接到调用 WCF 服务的数据库(添加为 Silverlight WCF 服务 - VSTemplate)。
在这个应用程序中,我像Jeremy Likness在他的博客上建议的那样介绍 Prism
我还使用 Web 代理从 ViewModel 访问 WCF 服务。
我的项目结构:
- 网络项目
- SilverlightAppWithShell
- 模块A
- 模块B
- 共同项目
部署目录结构:
C:\inetpub\wwwroot\MyAppFolder(IIS 用户可以访问它)
- .\bin\AllDlls
- .\ClientBin\AllXapFiles(来自上述所有项目的 XAP 文件)
- .\Services\All *.cs 定义服务操作合同的文件
- .\Web.config
- .\TestPage.html
- .\TestPage.aspx
- .\Silverlight.js
- .\AllServices *.scv 文件
最后但并非最不重要
- .\clientaccesspolicy.xml
里面有这段代码:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>"
</allow-from>
<grant-to>
<resource path="/Services" include-subpaths="true"/><!--I tried with App_Code here when renaming Services dir to App_Code with the same wain result-->
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
感谢您阅读